如何解决Django 1.5版:“ url”需要一个非空的第一个参数语法在Django 1.5中已更改
我真的很讨厌用手做所有这些垃圾,所以我写了一个sed脚本来替我做。确保先备份,然后在模板目录中运行此备份:
find . -type f -print0 | xargs -0 sed -i 's/{% url \([^" >][^ >]*\)/{% url "\1"/g'
它会遍历所有模板文件并替换为:
{% url something.else foo bar %}
有了这个
{% url "something.else" foo bar %}
请注意,我对此有点懒,它可能会在某些结构上中断。不过,在差异中查找错误仍然比手工操作要容易得多。
解决方法
我开始使用Django 1.5版,而我的旧代码出现了问题:
<a href="{% url auto.views.viewpost post.slug %}"><h3>{{post.title}}</h3></a>
错误:“ url”需要一个非空的第一个参数。语法在Django 1.5中已更改,请参阅文档。文件:
值得注意的一项不推荐使用的功能是转向“新型” URL标签。在Django 1.3之前,诸如{%url myview%}之类的语法被错误解释(Django认为“ myview”是视图的文字名称,而不是名为myview的模板变量)。Django 1.3及更高版本引入了{未来的%加载网址}语法,以引入更正的行为,其中myview被视为变量。
这样的结果是,如果你在模板中未使用{%将来的%}加载URL,则需要将{%url myview%}之类的标签更改为{%url“ myview”%}。如果你使用的是{未来的%加载网址},则可以在Django 1.5下简单地删除该行
然后,我尝试了: <a href=“{% url ‘auto.views.view_post’ post.slug %}”><h3>{{post.title}}</h3></a>
但是对于’auto.views.view_post’却出现了错误反向,其中未找到参数’(’,)’和关键字参数’{}’。:(我做错了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。