获取烧瓶管理员ModelView
的网址的正确方法是什么?
这是一个非常简单的例子:
my_admin_view.py
from flask.ext.admin.contrib.sqla import ModelView
from common.flask_app import app
from models import db, User, Role
admin = Admin(app, name="Boost Admin")
admin.add_view(ModelView(User, db.session, category="model"))
admin.add_view(ModelView(Role, db.session, category="model"))
my_admin_template.html
...
<p>Check out my user admin link:</p>
<a href="{{ url_for('modelview.user') }}">User view link</a>
{# ______________
what argument to pass in here?? #}
...
传递给url_for(...)
的正确参数是什么?
我已经尝试了modelview.user
,my_admin_view.modelview.user
等。它们似乎都没有正确解析,我想避免对链接进行硬编码。
谢谢!
答案 0 :(得分:10)
好的,我在阅读了ModelView的源代码后想出来了。
首先,确保端点已命名(可以在没有命名端点的情况下执行此操作,但这会使代码更清晰):
from flask.ext.admin.contrib.sqla import ModelView
from models import db, User, Role
admin = Admin(app, name="Boost Admin")
admin.add_view(ModelView(User,db.session,category="model", endpoint="model_view_user"))
admin.add_view(ModelView(Role,db.session,category="model", endpoint="model_view_role"))
...现在在模板中,您可以按如下方式引用基本模型视图:
URL for User model default view is: {{model_view_user.index_view}}
URL for Role model default view is: {{model_view_role.index_view}}
index_view
函数定义为here,并实现了烧瓶管理模型的默认视图。
答案 1 :(得分:4)
请参阅Generating URLs中的Flask-Admin introduction部分。
它说“使用模型的小写名称作为前缀”。添加一个点和视图的名称。
index_view
获取概览列表。create_view
用于创建新行。edit_view
用于修改现有行。所以你可以很容易地做到:
url_for('user.index_view')
url_for('role.create_view')
url_for('user.edit_view', id=1)
答案 2 :(得分:0)
应该是
url_for('admin.user')
如果您阅读flask-admin文档here,为了生成网址,它会清楚地说:
If you want to generate a URL for a particular view method from outside, the following rules apply:
....
3. For model-based views the rules differ - the model class name should be used if an endpoint name is not provided.