7

获取 flask-admin 的 URL 的正确方法是什么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等。它们似乎都没有正确解析,我想避免对链接进行硬编码。

谢谢!

4

3 回答 3

12

好的,我在阅读 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函数在此处定义,并实现了烧瓶管理员模型视图的默认视图。

于 2014-02-01T01:02:07.340 回答
5

请参阅Flask-Admin 介绍中的生成 URL部分。

它说“使用模型的小写名称作为前缀”。添加一个点和视图的名称。

  • index_view概览列表。
  • create_view用于创建新行。
  • edit_view用于修改现有行。

所以你可以很容易地做到:

url_for('user.index_view')
url_for('role.create_view')
url_for('user.edit_view', id=1)
于 2016-03-01T10:37:14.420 回答
0

它应该是

url_for('admin.user')

如果您在此处阅读 flask-admin 文档,用于生成 URL,它清楚地表明:

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. 
于 2013-12-06T19:10:51.360 回答