2016-12-27 8 views
1

私は1ページでドキュメントを検索するための単一のテストを持っています。純粋なスクリプトのようにすべてのこの作業を理解するだけで、安らかなAPIのためではありません。フラスコ内の文脈、jsonfyのための、すべての単一のページ

私が使用したときに私の問題がある:

print (jsonify({'result' : output})) 

私はこのエラーを取得しました:

RuntimeError: Working outside of request context. 

This typically means that you attempted to use functionality that needed 
an active HTTP request. Consult the documentation on testing for 
information about how to avoid this problem. 

私は

print (output) 

でこの行を置き換え一切errosを持っていないし、持っているときドキュメント。

どのようにjsonifyのコンテキストを指定できますか?別の文脈の中で?

from flask import Flask 
from flask import g 
from flask import jsonify 
from flask import request 
from flask_pymongo import PyMongo 
from flask import make_response 
from bson.objectid import ObjectId 
from flask import current_app 
import sys 


app = Flask(__name__) 

app.config['MONGO_DBNAME'] = 'restdb' 
app.config['MONGO_URI'] = 'mongodb://localhost:27017/crm1' 

@app.errorhandler(404) 
def not_found(error): 
    return make_response(jsonify({'error':'Notfound' }),404) 


with app.app_context(): 
    mongo = PyMongo(app) 
    star = mongo.db.accounts 
    output = [] 
    for s in star.find(): 
    output.append({'id': str(s['_id']) ,'firstname' : s['firstname'], 'lastname' : s['lastname']}) 
    print (jsonify({'result' : output})) 
    #print (output) 



if __name__ == '__main__': 
    app.run(debug=True) 

答えて

2

Jsonify作品のHttpResponseと:私はすでにここでは、コードを

with app.app_context(): 

を使用していますので。 あなたはPythonのJSONモジュールを使用して出力 ように印刷することができます。

import json 

print(json.dumps(output)) 
+0

私は()current_app.test_request_contextにして解決した。しかし、要求がないので、それは、requesの(jsonify)とは意味の仕事を持っていないのです。 .. – stackdave

+0

あなたの応答を修正してください。python 3のためには丸い括弧が必要です:print(json.dumps(output)) – stackdave

+0

あなたはハックを試みています。 http://stackoverflow.com/questions/7907596/json-dumps-vs-flask-jsonify –

関連する問題