Django 4.1.4中如何在HTML属性中加条件判断避免代码重复
Django模板中避免重复form标签的解决方案
你遇到的问题是因为模板代码里{% if %}和{% url %}之间的空格被保留到了action属性值里,导致URL前后多了空格,浏览器无法正确识别。下面是几种不重复form标签的解决方法:
方法一:去掉多余空格,直接嵌套标签
把if块里的空格去掉,让url标签的输出直接拼接成正确的URL:
<form action="{% if update %}{% url 'in.edit_session' session.id %}{% else %}{% url 'in.save_session' %}{% endif %}" method="POST" class="form">
这样action属性会得到干净的URL,不会有多余空格干扰。
方法二:用{% url ... as %}提前存URL到变量
先根据update的值把对应URL存到变量里,再在form标签里引用,代码可读性更好:
{% if update %} {% url 'in.edit_session' session.id as form_action_url %} {% else %} {% url 'in.save_session' as form_action_url %} {% endif %} <form action="{{ form_action_url }}" method="POST" class="form"> <!-- 表单内容 --> </form>
方法三:使用Django模板条件表达式(Django 1.10+支持)
你用的4.1.4完全支持这种写法,能让代码更简洁:
<form action="{% url 'in.edit_session' session.id if update else 'in.save_session' %}" method="POST" class="form">
这里的条件表达式直接写在{% url %}标签里,当update为True时调用带参数的URL,否则调用无参数的。
内容的提问来源于stack exchange,提问作者calin24
相关产品推荐
相关产品推荐

