【问题标题】:url_for for class-based views in Flask-Adminurl_for 用于 Flask-Admin 中基于类的视图
【发布时间】:2015-11-11 12:57:58
【问题描述】:

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

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? url_for('admin.All_RDPs.testindex')url_for('admin.All_RDPs') 不工作。

【问题讨论】:

    标签: python flask flask-admin


    【解决方案1】:

    您可以通过将端点参数传递给 视图类构造函数:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 2013-02-04
      • 2013-01-25
      • 1970-01-01
      • 2015-11-22
      相关资源
      最近更新 更多