1

次のコードでは、すべてがメンバーのインデックス コントローラーにデフォルト設定されます。メンバー内の特定のメソッドを指すように add_view を設定するにはどうすればよいですか? このようにして、ドロップダウンに関連する機能を備えた単一の [メンバー] ボタンを配置できます。

ビュー:

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
4

1 に答える 1

1

同じクラスの 3 つのインスタンスを作成しているため、どのように役立つかわかりません。実装を高度に結合したままにすることはできますが、3 つの異なるクラスを持つ場合ほどの違いはありません。

とにかく、add_view常にメニュー項目をindexメソッドに向けます。ただし、self._default_viewデフォルトのビュー メソッド名 (Membersクラスのインデックス) が含まれています。

それがどのように見えるかについてのアイデアを与えるだけです:

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'))
# ... 
于 2013-03-30T08:00:30.357 に答える