我有一个基于类的管理员视图:
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
问题是:
all_rdps
?url_for
为这些端点生成网址? url_for('admin.All_RDPs.testindex')
,url_for('admin.All_RDPs')
无法工作。答案 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'))