我一直在和Django纠缠不清,遇到了这个问题,当下面的if标记都是相同的字符串时,比较返回false。 如果request.path是/ test /,则“ / {{values | lower}} /”也是/ test /,但它们不相等。为什么会这样?
<form class="btn-group btn-group-sm btn-group-toggle btn-block" action="" method="POST">
{% for i in name %}
{% csrf_token %}
{{ form.as_p }}
<input {% cycle name.0 name.1 name.2 name.3 name.4 as values %}
// HERE
{% if press == values or request.path == "/{{values|lower}}/" %}
class="btn btn-outline-dark btn-block m-2 active"
{% else %}
class="btn btn-outline-dark btn-block m-2"
{% endif %}
type="Submit" name="{{values}}" value="{{values}}"/>
// THESE TWO LINES PRINT THE STRINGS ON PAGE
{{request.path}}
/{{values|lower}}/
{% endfor %}
</form>
答案 0 :(得分:0)
找出一种使用以下方法摆脱request.path中的斜杠的方法:request.path|cut:'/'
现在,如果与values | lower相比较,它将返回true。如果有人有更好的解决方案,我会很乐意听到。
答案 1 :(得分:0)
您最好使用自定义模板标签。
templatetags
级别相同的views.py
文件夹__init__.py
放入空白内容的文件夹中#my_extras.py
from django import template
register = template.Library()
@register.filter(name='to_str')
def to_str(value):
return str(value)
{% load my_extras %}
{% if request.path|to_str==<another_string_to_comparre> %}
Do your stuff here
{% endif %}
别忘了重新启动服务器。