【发布时间】:2013-04-07 00:16:09
【问题描述】:
{% for url in urls %}
<a id="URL_url_{{ url.id }}" class="edit_rightclick"
title="RIGHT click to edit."
href="{% if ":" not in url.url %}http://{% endif %}{{ url.url }}">{{ url.url }}</a>
<span class="delete" id="URL_{{ url.id }}">&#10008;</span>
{% endfor %}
试探法旨在将部分或完整 URL(如 google.com)的值添加到前面,假设有时人们会粘贴完整的浏览器 URL,有时人们会输入 google.com 而从不输入 'http: //'。
模板引擎抱怨 '{% if ":" not in url.url %}' 是无效的语法。这里正确的语法/方法是什么?
【问题讨论】:
-
为什么不在服务器端逻辑而不是模板中对其进行规范化?
-
http:// 很丑。我可以在模板中存储带有完整地址的 URI,或者我可以通过存储显示 URL 和实时使用 URL 使我的代码更复杂。事实上,我想调试的 20-30 个字符的代码段可能比在服务器端重构东西要少调试,这样它就可以跟踪所有这些。
-
你不会为
https://链接负责,对吧? -
https:// 已经被条件处理了,它作为启发式检查冒号的存在,并将捕获 HTTPS URL 并正确存储和生成它们。协议所在的前缀 http:// 是适当的基本行为;习惯性地输入 jonathanscorner.com 的人可能想要jonathanscorner.com,而不是jonathanscorner.com:8443
-
如果有条件,我遇到了另一个类似的错误:虚线链接有问题吗?为什么这两个条件是“{% if “:” not in url.url %}”和“{% if time_zone.0 == entity.time_zone %}”。我想知道为什么不再尊重这些条件,引发语法错误。
标签: python django django-templates