2013-12-20 12 views
9

私はCMSを構築することでFlaskについてもっと学びたいと考えています。私はフラスコ管理者を使って投稿、画像などを追加しています。フラスコ管理者のModelView編集テンプレートへの引数の受け渡し

私はckeditorでテキストエリアを上書きすることができました。しかし、静的フォルダ内の画像のパスをckeditor画像プラグインに渡したいと思います。

edit.htmlテンプレートにパラメータを渡す方法がわかりません。

class TestAdmin(ModelView): 
    form_overrides = dict(text=forms.CustomTextAreaField) 
    create_template = 'edit.html' 
    edit_template = 'edit.html' 

私は_template_argsテンプレートにパラメータを渡すために使用できることを発見したフラスコ管理者のドキュメントから:

は、ここでは、コードです。しかし、私はどのように把握することはできません。

これを行う正確な方法はなんですか?

答えて

10

_template_argsを変更するには、ビューをオーバーライドする必要があります。

class TestAdmin(ModelView): 
    form_overrides = dict(text=forms.CustomTextAreaField) 
    create_template = 'edit.html' 
    edit_template = 'edit.html' 

    @expose('/edit/', methods=('GET', 'POST')) 
    def edit_view(self): 
     self._template_args['foo'] = 'bar' 
     return super(TestAdmin, self).edit_view() 

あなたがテンプレートにいくつかのグローバル値を渡したい場合は、あなたがcontext_processorhttp://flask.pocoo.org/docs/templating/#context-processors)を使用することができます。

@app.context_processor 
def inject_paths(): 
    # you will be able to access {{ path1 }} and {{ path2 }} in templates 
    return dict(path1='x', path2='y') 
+1

私はindex_viewと同様のことをしようとしていますが、全く動作しません。私は例外を取得し続ける: 例外:デフォルトビューなしで管理者ビューUserModelViewをインスタンス化しようとしました 何が間違っていますか? –

+0

@JamieHushいいえ、私はいくつかのコードなしで助けることはできません。 'AdminIndexView'をサブクラス化して' index'関数をオーバーライドするとうまくいくはずです。 – iurisilvio

+0

AttributeError: 'super'オブジェクトに 'index'属性がありません – jul

関連する問題