2012-08-08 66 views
0

我正在开发一个Python和谷歌应用程序引擎的小应用程序。我正在使用样板(https://github.com/coto/gae-boilerplate)作为前端,它遵循gae方向和python模板,所以没有什么比普通的东西不同。Python模板包含一个页面,如果条件

现在,我想要的是这个。 当用户登录时,如果姓名和姓氏字段未填写,我希望在主页中进行配置文件编辑。

用于编辑配置文件的页面是一个模板(扩展了base.html),名为edit_profile.html,该模板运行良好。 主页也是一个模板(扩展base.html),称为home.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.html条件if分支:

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中(假设included_form.html是一些基本的模板)

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

如果要将演示文稿作为独立页面,请将BASE_TEMPLATE设置为base.html

+0

嗯。似乎我必须重写由样板提供的模板。 第二种方法不起作用,也许我做错了什么。 无论如何,为了让这个例子更清晰,我想在我的页面中包含什么内容是这个tempalte的内容块里面是什么https://github.com/coto/gae-boilerplate/blob/master/templates/boilerplate_edit_profile.html 我可以对模板说包含该文件的内容块吗? – EsseTi 2012-08-08 15:17:13

+0

我可以对模板说是否包含该文件的内容块? - 没有 – yedpodtrzitko 2012-08-08 21:19:54

相关问题