2013-03-29 19 views
1

在以下代碼中,所有內容默認都是成員的索引控制器。如何設置add_view指向成員中的特定方法?通過這種方式,我可以在下拉菜單中使用與其相關的功能的單個成員按鈕。使用flask + admin模塊設置管理視圖

觀點:

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 

回答

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')) 
# ... 
+0

我真的不明白這個答案。我和OP有同樣的問題。基於文檔,在自定義類中定義不同方法的明顯目的是允許開發人員將它們添加爲在下拉列表中呈現的單獨呈現的端點。當你說「add_view總是指向索引方法」時,我不明白定義不同方法/端點的重點。這些示例在這方面沒有多大幫助 – domoarrigato

+0

我嘗試了上面的模式,但它重複了端點名稱,即。管理/編輯/編輯。我最終創建了不同的視圖類,並在每個視圖類上使用add_view將它們放入下拉列表中。 – domoarrigato

相關問題