诱使Flask/werkzeug从python shell呈现(Flask admin)页面

诱使Flask/werkzeug从python shell呈现(Flask admin)页面,flask,werkzeug,flask-admin,python,Flask,Werkzeug,Flask Admin,Python,我正在使用pythonshell//并试图找出是否可以诱使它转储它将为给定页面生成的html 我粘贴到python shell中的代码如下所示: 从烧瓶进口烧瓶 从flask.ext.admin导入管理 从flask.ext.admin.contrib.pymongo导入模型视图 从wtforms导入表单,字段 进口pymongo 类UserFormFormForm.Form: dispname=fields.TextField'Name' email=fields.TextField'emai

我正在使用pythonshell//并试图找出是否可以诱使它转储它将为给定页面生成的html

我粘贴到python shell中的代码如下所示:

从烧瓶进口烧瓶 从flask.ext.admin导入管理 从flask.ext.admin.contrib.pymongo导入模型视图 从wtforms导入表单,字段 进口pymongo 类UserFormFormForm.Form: dispname=fields.TextField'Name' email=fields.TextField'email' 类UserViewModelView: 列列表='dispname','email','username','userextra' form=UserForm client=pymongo.MongoClient db=客户端['cloud'] app=Flask“在此处输入名称” admin=Adminapp admin.add_viewUserViewdb['userpgs'] app.runhost='0.0.0.0',如果这是未注释的连接到 http://localhost:5000/admin/userpgsview 正确呈现mongo的内容 数据库“云”中的集合“userpgs” 我意识到,通过在示例中保留flask admin和pymongo/flask.ext.admin.contrib.pymongo,我使这个问题变得更加复杂,但我真正想理解的是flask admin呈现/html

我还没有找到关于如何调用/使用flask rendering/html的直接文档,但是通过向库中添加一些调试,我已经能够看到上面的代码导致flask中的blueprint/rule代码运行,并在我的应用程序中填充一个名为view_functions的列表,该列表中包含一些有前景名称的函数回调,如userpgsview.ajax_loopup,userpgsview.index\u视图等

我最想了解的是index_视图,它从其他调试中似乎绑定到url admin/userpgsviw/上,因此我开始尝试:

>>> app.view_functions.get(u'userpgsview.index_view')()
这导致了对异常RuntimeError的回溯:在应用程序上下文之外工作

在有关使用的flask文档中,我找到了有关设置上下文的信息,因此我做了以下工作

ctx=app.test\u请求\u上下文 ctx.push app.preprocess\u请求 并再次尝试,结果:

>>> 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很高兴

Frank,如果我的方法完全错误,我不会感到惊讶,但是我没有找到其他文档,我应该如何手动运行flask,如果我的目标是诱使它生成它将在html上创建的htmlhttp://localhost:5000/admin/userpgsview.


欢迎提出任何想法。

您应该能够使用模拟请求:

# Instead of test_request_context
client = app.test_client()
response = client.get("/admin/userpgsview")
# work with response here