2013-07-31 2 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.add_view (AdminView (User, Session, name = '사용자')) – Sleepwalker

+0

어떻게 정의 된 'AdminView'? – tbicr

답변

6

Flask-Admin 외부의 템플릿을 사용하는 것 같습니다.

flask_admin.base.BaseView에는 자체 변수 render function이있어 일부 변수를 설정합니다. 설치 방법을 수동으로 시도 할 수는 있지만, 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()를 정의 할 수있는 것은 아닙니다). –

관련 문제