2012-09-09 10 views
3

플라스크 응용 프로그램에서 모든 페이지의 기본 페이지 제목을 설정하려고합니다.Jinja2 기본 페이지 제목

기본 레이아웃 템플릿에 삽입하고 싶습니다. 내 설정에 사이트 이름이 있습니다.

<title>{{title}}</title}} 

문제는 설정에서 레이아웃 템플릿으로 사이트 이름을 가져올 수없는 것입니다.

<title>{{settings.SETTING}}</title}} 

및 이와 유사한 변형이 적용되지 않습니다.

쉬운 방법이 있습니다. 내 컨트롤러의 모든 동작과 함께 제목을 설정하지 않아도되며 논리적 인 방법은 내 설정에서 템플릿으로 이동하는 것입니다. 나는 지금 어떤 길을 찾지 못했다.

편집 :

내가 확장 쓰기, 내가 템플릿에 변수를 끌어 확장을 사용하지만, 전체 확장을 쓰고 내 응용 프로그램의 다른 부분을보고하지 않으려는 내 시간 투자를 넘어 비트가 그때.

편집 :

템플릿
def page_title(title): 
    return settings.SITE_NAME 

app.jinja_env.filters['page_title'] = page_title 

:

뭔가 가까이
{{ title | page_title}} 

, 난 제목을 설정 또는 기본값 대체하려면 그리고 그

답변

5

를 작동하는 첫 번째 단계입니다 블록 사용 :

<title>{% block title %}{{ settings.SETTING }}{% endblock %}</title> 

그런 다음 제목을 변경하려면 기본 템플릿에서 상속 한 템플릿에서 해당 블록을 간단히 재정의 할 수 있습니다.

{% block title %}your custom title{% endblock %} 
+0

좋은 시작입니다. 내 자신의 솔루션보다 더 좋아하지만 '설정'에 액세스 할 수 없다는 문제가있어서 오류가 발생합니다. 즉 원래의 문제입니다. 설정 -> 템플릿에서 읽을 수 없습니다. – blueblank

+0

아, 템플릿에'config'로 사용할 수있는 app.config를 사용하고 싶습니다. 그렇지 않으면 서식 파일 컨텍스트에'settings'을 추가해야합니다 : http://flask.pocoo.org/docs/templating/#context-processors – ThiefMaster

+0

{{config [ 'NAME']}}을 이게 내가 지금 이걸로 갈거야 그래서 작동합니다. – blueblank