파이썬 셸을 사용하여 flask-admin/pymongo/flask에서 파싱 할 것이고 html로 덤핑 할 수 있는지 알아보기 위해 노력하고 있습니다. 주어진 페이지에 대해 생성됩니다.Flax/werkzeug가 파이썬 셸에서 (flask-admin) 페이지를 렌더링합니다.
다음과 같이 내가 파이썬 쉘에 붙여 넣기하고있어 코드는 다음과 같습니다
from flask import Flask
from flask.ext.admin import Admin
from flask.ext.admin.contrib.pymongo import ModelView
from wtforms import form, fields
import pymongo
class UserForm(form.Form):
dispname = fields.TextField('Name')
email = fields.TextField('Email')
class UserView(ModelView):
column_list = ('dispname', 'email', 'username', 'userextra')
form = UserForm
client = pymongo.MongoClient()
db = client['cloud']
app = Flask('putting_a_name_here')
admin = Admin(app)
admin.add_view(UserView(db['userpgs']))
#app.run(host='0.0.0.0') # If this is uncommented connecting to
# http://localhost:5000/admin/userpgsview
# properly renders the contents of the mongo
# collection 'userpgs' in db 'cloud'
(나는 내가
flask-admin
와 예
pymongo
/
flask.ext.admin.contrib.pymongo
하지만
flask-admin
를 떠나하여이 훨씬 더 복잡한을 만들고있어 실현 렌더링/html은 내가 실제로 이해하려고하는 것입니다.)
플라스크 렌더링/html이 어떻게 호출되는지/사용되었는지에 대한 직접적인 문서를 찾을 수 없었지만, 라이브러리에 디버깅을 추가하여 직접 문서를 찾을 수 없었습니다. 위 코드가 플라스크에서 청사진/규칙 코드를 유발할 수 있음을 알았습니다. 함수를 콜백 (userpgsview.ajax_loopup
, userpgsview.index_view
등의 유망한 이름)과 함께 app
에있는 목록을 실행하고 채우려면 view_functions
이라고 부릅니다.
(다른 디버깅에서) admin/userpgsviw/
를 URL에 따를 나타나는 index_view
은 이해 할 가장 것입니다, 그래서 시도가 시작한 : 예외 RuntimeError: working outside of application context
에 역 추적을 발생
>>> app.view_functions.get(u'userpgsview.index_view')()
나는 상황 설정에 대한 정보를 볼 수있는 python shell를 사용하여 플라스크 설명서에 주위 파고, 그래서 나는 다음과 같은
ctx=app.test_request_context()
ctx.push()
app.preprocess_request()
했다
및 결과 다시 시도 :
>>> app.view_functions.get(u'userpgsview.index_view')()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/flask_admin/base.py", line 62, in inner
return f(self, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask_admin/base.py", line 62, in inner
return f(self, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask_admin/base.py", line 62, in inner
return f(self, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask_admin/model/base.py", line 1191, in index_view
filters),
File "/usr/local/lib/python2.7/dist-packages/flask_admin/model/base.py", line 1062, in _get_url
return url_for(view, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/flask/helpers.py", line 312, in url_for
return appctx.app.handle_url_build_error(error, endpoint, values)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1641, in handle_url_build_error
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/helpers.py", line 305, in url_for
force_external=external)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/routing.py", line 1620, in build
raise BuildError(endpoint, values, method)
werkzeug.routing.BuildError: ('index_view', {}, None)
그리고 나는 내가 너무 werkzeug.routing
가 행복 일을 초기화 할 수있는 방법에 대한 단서를 찾을 수 없어.
프랭크, 완전히 잘못된 접근에서이 문제에 관해서는 놀라지 않을 것이지만, 다른 문서를 찾는 데 어떤 행운이 없었습니다. 목표가 달성되면 어떻게해야합니까? http://localhost:5000/admin/userpgsview
의 html-get에서 생성 할 html을 생성하기 위해 그것을 동축으로 만듭니다.
모든 아이디어가 크게 환영받을 것입니다.