2017-03-12 42 views
1

我有一個Flask-Admin項目,我正在努力並希望添加聯繫人頁面。我下面就https://code.tutsplus.com/tutorials/intro-to-flask-adding-a-contact-page--net-28982將聯繫人頁面添加到Flask管理員

的例子此問題是,它是專爲瓶,但我的所有模板都基於瓶 - 管理模板。

@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' %} 

作爲結果,存在引發的錯誤消息。

jinja2.exceptions.UndefinedError: 'admin_view' is undefined

我知道我可以修改模板以刪除擴展管理模板但是整個網站的導航是通過

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

這樣做最好我想獲得與我們聯繫中工作與管理員模板。我確定不知道如何跨越整個管理環境。

回答

2

您需要使用flask_admin.base.BaseView.render方法來使用flask-admin上下文來處理模板。它可能看起來像這樣:

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實例:

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