url_for用于Flask-Admin中基于类的视图

时间:2015-11-11 12:57:59

标签: python flask flask-admin

我有一个基于类的管理员视图:

class All_RDPs(BaseView):
    @expose('/')
    def index(self):
        return 'ok1'
    @expose('/test')
    def testindex(self):
        return 'ok2'

在Flask-Admin中注册,如下所示:

admin.add_view(All_RDPs(name='dep_rdp'))

然后可以从浏览器中查看:

http://localhost/admin/all_rdps/
http://localhost/admin/all_rdps/test

问题是:

  1. 如何指定此类的URL而不是默认生成的名称all_rdps
  2. 如何使用url_for为这些端点生成网址? url_for('admin.All_RDPs.testindex')url_for('admin.All_RDPs')无法工作。

1 个答案:

答案 0 :(得分:5)

  

您可以通过将endpoint参数传递给来覆盖端点名称   视图类构造函数:

admin = Admin(app)
admin.add_view(MyView(endpoint='testadmin'))
     

在这种情况下,您可以通过连接视图方法来生成链接   带端点的名称:

url_for('testadmin.index')
     

如果您不覆盖端点名称,则小写的类名称可以   用于生成URL,如:

url_for('myview.index')
     

对于基于模型的视图,规则不同 - 模型类名称应该是   如果未提供端点名称,则使用此选项。 ModelView也有   默认情况下,这些端点:.index_view,.create_view和.edit_view。   因此,可以为名为" User":

的模型生成以下URL
# List View
url_for('user.index_view')

# Create View (redirect back to index_view)
url_for('user.create_view', url=url_for('user.index_view'))

# Edit View for record #1 (redirect back to index_view)
url_for('user.edit_view', id=1, url=url_for('user.index_view'))

来源:Flask-Admin quickstart