2013-07-31 159 views
5

我試圖用這樣的燒瓶聯繫的「master.html」模板擴展我的模板:燒瓶管理擴展模板

{% extends 'admin/master.html' %} 
{% block body %} 
    Hello!!! 
{% endblock %} 

我得到錯誤:

File "/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/Jinja2-2.6-py2.7.egg/jinja2/environment.py", line 894, in render 
return self.environment.handle_exception(exc_info, True) 
File "/Users/Slowpoke/Projects/Python/spider/spider/templates/form.html", line 1, in top-level template code 
{% extends 'admin/master.html' %} 
File "/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/Flask_Admin-1.0.6-py2.7.egg/flask_admin/templates/admin/master.html", line 1, in top-level template code 
{% extends admin_base_template %} 
File "/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/Flask-0.9-py2.7.egg/flask/templating.py", line 57, in get_source 
return loader.get_source(environment, local_name) 
File "/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/Jinja2-2.6-py2.7.egg/jinja2/loaders.py", line 162, in get_source 
pieces = split_template_path(template) 
File "/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages/Jinja2-2.6-py2.7.egg/jinja2/loaders.py", line 29, in split_template_path 
for piece in template.split('/'): 
UndefinedError: 'admin_base_template' is undefined 

這裏如何我初始化燒瓶管理:

admin = Admin(app, name='Spiders') 
admin.add_view(AdminView(User, Session, name='Users')) 

而且AdminView類:

from flask.ext.admin.contrib.sqlamodel import ModelView 
from flask.ext import login 
class AdminView(ModelView): 
    def is_accessible(self): 
     return login.current_user.is_authenticated() 
+1

你能告訴你如何初始化你的管理和模板目錄結構? – alecxe

+0

你在這裏, admin = Admin(app,name ='Spiders') admin.add_view(AdminView(User,Session,name ='Users')) – Sleepwalker

+0

如何定義AdminView? – tbicr

回答

6

看起來像你在Flask-Admin之外使用模板。

flask_admin.base.BaseView有自己render function,它設置了一些變量。您可以嘗試將其設置爲manualy,但是我看不到在Flask-Admin視圖之外使用Flask-Admin模板的原因。

見壞榜樣:

class MyView(BaseView): 
    def __init__(self, *args, **kwargs): 
     self._default_view = True 
     super(MyView, self).__init__(*args, **kwargs) 
     self.admin = Admin() 

@app.route('/form') 
def form(): 
    return MyView().render('form.html') 
+0

哦。現在我明白了。這是一個愚蠢的問題:)非常感謝@tbicr – Sleepwalker

+0

@tbicr因爲你似乎是一個瓶 - 管理員職業:以防萬一你知道答案,我開始在[這個問題]賞金(http:// stackoverflow的.com/q/33660840)。 :) –

6

我遇到了同樣的問題,試圖延長瓶 - 管理模板。

return render_template('path_to_template')更改爲return self.render('path_to_template')解決了該問題。

+0

只有當你有'self'對象(即在一個類實例內 - 在這種情況下,你並不總是可以很容易地定義'@ app.route()')時,它纔有效。 –