Python 使用flask+设置管理视图;管理模块

Python 使用flask+设置管理视图;管理模块,python,flask,Python,Flask,在下面的代码中,所有内容都默认为成员的索引控制器。如何设置“添加视图”以指向成员中的特定方法?这样,我就可以在下拉列表中有一个带有相关功能的Members按钮 观点: admin.add_view(Members(name="Add",endpoint="add",category="Members")) admin.add_view(Members(name="Edit",endpoint="edit",category="Members")) admin.add_view (Members(

在下面的代码中,所有内容都默认为成员的索引控制器。如何设置“添加视图”以指向成员中的特定方法?这样,我就可以在下拉列表中有一个带有相关功能的Members按钮

观点:

admin.add_view(Members(name="Add",endpoint="add",category="Members"))
admin.add_view(Members(name="Edit",endpoint="edit",category="Members"))
admin.add_view
(Members(name="Delete",endpoint="delete",category="Members"))
管理模块:

from flask import render_template, abort
from jinja2 import TemplateNotFound
from flask.ext.admin import BaseView, expose, Admin

admin = Admin(name='Foo')

# Add administrative views here

class Members(BaseView):
    @expose('/')
    def index(self):
        return self.render('admin/index.html')

    @expose('/edit')
    def edit(self):
        return self.render('admin/edit.html')

    @expose('/delete')
    def delete(self):
        pass

不确定它会有什么帮助,因为您正在创建同一类的3个实例。虽然您可以保持实现的高度耦合,但它不会像拥有3个不同的类那样不同

无论如何,
add\u view
将始终将菜单项指向
index
方法。但是,
self.\u default\u视图
包含默认视图方法名称(您的
成员
类的索引)

只是想让大家了解一下它的样子:

class MyBase(BaseView):
  def __init__(self, def_view, **kwargs):
    self._default_view = def_view
    super(MyBase, self).__init__(**kwargs)

class Members(MyBase):
  @expose('/')
  def index(self):
    return self.render('...')

  #.. other view methods

admin.add_view(Members(def_view='index', name='Add', endpoint='add'))
admin.add_view(Members(def_view='edit', name='Edit', endpoint='edit'))
# ... 

不确定它会有什么帮助,因为您正在创建同一类的3个实例。虽然您可以保持实现的高度耦合,但它不会像拥有3个不同的类那样不同

无论如何,
add\u view
将始终将菜单项指向
index
方法。但是,
self.\u default\u视图
包含默认视图方法名称(您的
成员
类的索引)

只是想让大家了解一下它的样子:

class MyBase(BaseView):
  def __init__(self, def_view, **kwargs):
    self._default_view = def_view
    super(MyBase, self).__init__(**kwargs)

class Members(MyBase):
  @expose('/')
  def index(self):
    return self.render('...')

  #.. other view methods

admin.add_view(Members(def_view='index', name='Add', endpoint='add'))
admin.add_view(Members(def_view='edit', name='Edit', endpoint='edit'))
# ... 

我真的不明白这个答案。我的问题与OP相同。基于文档,在自定义类中定义不同方法的明显目的是允许开发人员将它们添加为单独呈现的端点,并在下拉列表中显示。当你说“添加视图总是指向索引方法”时,我不理解定义不同方法/端点的意义。这些例子在这方面没有多大帮助。我尝试了上面的模式,但它复制了端点名称,即admin/edit/edit。我最终只是创建了不同的视图类,并在每个视图上使用add_view将它们放到下拉列表中。我真的不明白这个答案。我的问题与OP相同。基于文档,在自定义类中定义不同方法的明显目的是允许开发人员将它们添加为单独呈现的端点,并在下拉列表中显示。当你说“添加视图总是指向索引方法”时,我不理解定义不同方法/端点的意义。这些例子在这方面没有多大帮助。我尝试了上面的模式,但它复制了端点名称,即admin/edit/edit。我最终只是创建了不同的视图类,并在每个视图上使用add_view将它们放到下拉列表中。