2017-03-12 9 views
1

私はFlask-Adminプロジェクトを行っていますが、私はコンタクト先のページを追加しようとしています。私はこの例を次のようにしていますhttps://code.tutsplus.com/tutorials/intro-to-flask-adding-a-contact-page--net-28982Flask Adminにコンタクトページを追加

この問題はFlask用に設計されていますが、すべてのテンプレートはFlask-Adminテンプレートに基づいています。

@app.route('/contact', methods=['GET', 'POST']) 
def contact(): 
    form = ContactForm() 

    if request.method == 'POST': 
    if form.validate() == False: 
     flash('All fields are required.') 
     return render_template('contact.html', form=form) 
    else: 
     msg = Message(form.subject.data, sender='[email protected]',  
      recipients=['[email protected]']) 
     msg.body = """ 
     From: %s <%s> 
     %s 
     """ % (form.name.data, form.email.data, form.message.data) 
     mail.send(msg) 

     return render_template('contact.html', success=True) 

    elif request.method == 'GET': 
    return render_template('contact.html', form=form, admin=admin) 

contact.htmlがスローエラーメッセージがあり、結果として2つの管理テンプレート

{% import 'admin/layout.html' as layout with context -%} 
{% extends 'admin/base.html' %} 

を拡張します。私は、サイト全体のためのナビゲーションはとても理想的な私は、お問い合わせページの作業を取得したいと思い

{{ layout.menu() }} 
{{ layout.menu_links() }} 

によって行われますが、私は拡張管理テンプレートを削除するには、テンプレートを修正することができます知っている

jinja2.exceptions.UndefinedError: 'admin_view' is undefined

adminテンプレートを使用します。管理者全体のコンテキストをどのように渡すかはわかりません。

答えて

2

フラスコ管理コンテキストでテンプレートを処理するには、flask_admin.base.BaseView.renderメソッドを使用する必要があります。それは次のようになります。

admin.add_view(ContactsView('Contacts', url='/contacts')) 

from flask_admin import BaseView, expose 

class ContactsView(BaseView): 
    @expose('/') 
    def index(self): 
     # Here are the contents of your "contact" route function 
     return self.render('contact.html', form=form, admin=admin) 

あなたはModelViewインスタンスとして、このビューを同じ方法で起動することができます

関連する問題