2012-08-08 5 views
0

저는 Python과 Google 앱 엔진으로 작은 앱을 개발하고 있습니다. 나는 gae 방향과 파이썬 템플릿을 따르는 프론트 엔드로서 보일러 플레이트 (https://github.com/coto/gae-boilerplate)를 사용하고 있기 때문에 평범한 것보다 다른 것은 없다.조건이있는 경우 Python 템플릿에 페이지가 포함됩니다.

지금, 내가 갖고 싶은 것은 이것입니다. 사용자가 로그인 할 때 이름과 성 필드가 채워지지 않으면 홈 페이지에서 프로필 편집을하고 싶습니다.

프로필 편집을위한 페이지는 잘 작동하는 edit_profile.html이라는 템플릿 (base.html을 확장)입니다. homepage는 home.html이라는 템플릿 (base.html 확장)이기도합니다.

이제 home.html에 edit_profile.html을 포함시킬 수 있습니까? 내가 어떻게 해?

이것은 내가 무엇을했는지, 대신 무엇을 넣어야할지 모르겠다. 내가

{% block edit_profile.html %} {% endblock %} 

으로 시도했지만

{% if user_info.name and user_info.last_name %} 
     .. 
     {% else %} 
      ???? 
     {% endif %} 

덕분에 작동하지 않습니다.

답변

2

그래서 주어진 템플릿의 일부 블록 만 포함하고 싶습니다. 다음 두 가지 솔루션이 있습니다.

1) 프로필 편집 양식 용 템플릿을 만들어 edit_profile.html에 포함시킵니다. 이어서 home.htmlif 조건 분기도를 포함

profile_form.html :

<form action="{% url some-action %}"> 
{{ form }} 
<input type="submit" value="save"/> 
</form 

profile_edit.html

{% extends "base.html" %} 

{% block main %} 
{% include "profile_form.html" %} 
{% endblock %} 

home.html을

{% if user_info.name and user_info.last_name %} 
{% include "profile_form.html" %} 
{% endif %} 

2) 변수를 사용하여 확장 템플릿 :

profile_form.html

{% extend BASE_TEMPLATE %} 

및 상황에 필요한 w/다른 값으로 설정 : home.html을에서

{% if user_info.name and user_info.last_name %} 
{% with "included_form.html" as BASE_TEMPLATE %} 
    {% include "edit_profile.html" %} 
{% endwith %} 
{% endif %} 

(의가 included_form.html을 가정 해 봅시다 몇 가지 기본 템플릿입니다) 표시 형식을 독립 실행 형 페이지로 설정하려면 base.html

+0

으로 설정하십시오. 음. 보일러 플레이트에서 제공하는 템플릿을 다시 작성해야합니다. 두 번째 방법이 작동하지 않습니다. 어쩌면 내가 잘못했기 때문일 수 있습니다. 어쨌든 예를 더 명확하게 나타내려면 내 페이지 안에 포함 할 내용은이 임시 키의 콘텐츠 블록 안에 있습니다. https://github.com/coto/gae-boilerplate/blob/master/templates/boilerplate_edit_profile.html 해당 파일의 콘텐츠 블록을 포함하도록 템플릿에 말할 수 있습니까? – EsseTi

+0

해당 파일의 콘텐츠 블록을 포함하도록 템플릿에 말할 수 있습니까? - 아니 – yedpodtrzitko

관련 문제