在 django 模板中使用相同的块根据变量显示不同的信息
Posted
技术标签:
【中文标题】在 django 模板中使用相同的块根据变量显示不同的信息【英文标题】:Using the same block in a django template to display different information depending on a variable 【发布时间】:2011-07-29 13:38:58 【问题描述】:嘿,堆栈溢出先生! 我试图在同一个块中显示不同的信息,具体取决于变量“选择”,它只是一个 int。我计划这样做的方式类似于下面的代码:
% extends "index.html"%
%block head%
<p><h1>Welcome to Piss && ink user</h1></p>
%endblock head%
%block one%
<p>The temperature in city is temperature° </p>
%endblock one%
%if choice1 == 2 %
%block two%
<p>The temperature in city is temperature° </p>
%endblock two%
% endif %
%comment%
%if choice1 == 2 %
%block two%
<p>The temperature in city is temperature° </p>
%endblock%
% endif %
%endcomment%
%block two%
<form method="post">
%csrf_token%
% if new_event %
<b><p>new_event</p></b>
% endif %
%endblock%
现在,我遇到的问题是模板不喜欢模板中有两个同名的块。出于某种原因,它似乎并不关心正在检查 % block %
应该去哪里的 % if %
语句。我认为% if %
语句只会根据其参数执行其内部的内容,但它似乎并没有这样做。它会显示% if %
中的所有内容,无论“choice1”是什么都相等:( 有谁知道我该如何解决这个问题?谢谢
【问题讨论】:
【参考方案1】:另一种方法(如果模板差异很大)是按照以下方式做一些事情:
% extends choice_template %
并在视图中设置choice_template。
【讨论】:
【参考方案2】:将 if 放在块中。一个块,两个 if 语句
% block two %
% if choice == 1 %
<p>Some Content</p>
% endif %
% if choice == 2 %
<p>Other Content</p>
% endif %
% endblock two %
【讨论】:
【参考方案3】:将逻辑放在块内,而不是有两个同名的块。
代替:
%if choice1 == 2 %
%block two%
<p>The temperature in city is temperature° </p>
%endblock two%
% endif %
%comment%
%if choice1 == 2 %
%block two%
<p>The temperature in city is temperature° </p>
%endblock%
% endif %
%endcomment%
%block two%
<form method="post">
%csrf_token%
% if new_event %
<b><p>new_event</p></b>
% endif %
%endblock%
使用:
% block two %
% if choice1 == 2 %
<p>The temperature in city is temperature° </p>
% else %
<form method="post">
%csrf_token%
% if new_event %
<b><p>new_event</p></b>
% endif %
% endif %
% endblock %
【讨论】:
以上是关于在 django 模板中使用相同的块根据变量显示不同的信息的主要内容,如果未能解决你的问题,请参考以下文章