{% 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 %}
启发式旨在预先设置部分或完整网址的价值,例如google.com,假设有时人们会粘贴完整的浏览器网址,有时人们会输入google.com并且永远不会输入'http: //'.
模板引擎抱怨“{%if”:“not in url.url%}”是无效的语法。这里的语法/方法是什么?
答案 0 :(得分:1)
如何使用过滤器:
href="{{ ulr.url|urlize }}"
请记得在此之前检查以构建您自己的(查找urlize): https://docs.djangoproject.com/en/dev/ref/templates/builtins/
我认为更好的方法是将网址保存为管理员中的绝对网址,并在显示链接时删除“ http:// ”...
答案 1 :(得分:0)
作为使用内联模板语句或模板过滤器的替代方法,您可以在模型上创建方法/属性来处理URL创建逻辑。假设您的网址是模型:
class Url(models.model):
url = model.TextField()
@property
def full_url(self):
if ":" not in url.url:
....
return full_url
直接在模板中使用
href="{{ url.full_url }}">{{ url.url }}</a>
模板保持干净,没有“业务逻辑”,这可能是一个很好的方法,例如如果你有设计师创建html / css模板
编辑:这还可以让您在full_url属性中执行更高级的逻辑(例如检查垃圾邮件,损坏的链接等)