我迭代了一个名为Ideas.的django表中的所有条目,表中的一个字段是status,我想检查状态是否等于某个特定的字符串。我已经检查了我是否正确地访问了这个字段,我的例子是idea.status,但是我找不到如何将该条目与django模板语言文档中的特定字符串进行比较。我正在尝试根据单元格中的内容来更改表格的单元格颜色。以下是我尝试的方法,但无济于事:
{% for idea in ideas_list %}
...
{% if idea.status == 'Not Started' %}
<td style="background-color:red;">
{% elif idea.status == 'Completed' %}
<td style="background-color:green;">
{% elif idea.status == 'In Progress' %}
<td style="background-color:yellow;">
{% else %}
<td>
{% endif %}
{{idea.status}} </td>
...
{% endfor %}我的页面仍然使用表中的状态文本呈现,这表明所有的if都失败了,这将以满足else条件结束,并给出没有单元格颜色的<td>{{idea.status}} </td>,并向我表明问题出在if语句本身。
发布于 2020-09-06 07:53:34
我找到了一个有效的答案,并指出这与djnago正在使用的字符串格式有关。我使用了slugify过滤器,它将字符串转换为特定的格式(小写,破折号而不是空格),然后更改if条件以匹配该格式,它就起作用了。
{% for idea in ideas_list %}
...
<td>{{idea.priority}} </td>
<td>{{idea.difficulty}} </td>
{% if idea.status|slugify == 'not-started' %}
<td style="background-color:red;">
{% elif idea.status|slugify == 'completed' %}
<td style="background-color:green;">
{% elif idea.status|slugify == 'in-progress' %}
<td style="background-color:yellow;">
{% else %}
<td>
{% endif %}
{{idea.status}} </td>
...
{% endfor %}你可以在这里看到django是如何使用slugify格式化字符串的:https://docs.djangoproject.com/en/1.10/ref/templates/builtins/
发布于 2020-09-06 07:53:41
您的模板部件是正确的。这是正确的语法:
{% if idea.status == 'Not Started' %}日志记录数据
调试模板中的内容的最简单方法是在呈现模板之前记录您所拥有的内容。您可以使用日志模块Docs或simple:
print(payload_for_rendering) Django调试工具栏
为每个Django开发人员安装主要的调试工具- Django Debug Toolbar install docs。您可以使用工具栏中的“模板”模块来查看模板在nice用户界面中接收到的数据。您可以检查是否向模板渲染器发送了正确的数据。
https://stackoverflow.com/questions/63759274
复制相似问题