升级到1.10或1.11后,Django将URL参数命名为不再有效

时间:2017-04-24 17:40:24

标签: python django url-routing

我有一个旧的Django应用程序,它以这种方式使用URL模板标记:

{% url 'smart_service.views.view_name' %}

到目前为止,它工作得很好,但是在更新到版本1.10之后,没有任何工作了,任何使用都会返回NoReverseMatch

我可以通过将app_name = 'smart_service'放入我的urls.py文件并将url标记更改为此来解决此问题:

{% url 'smart_service:view_name' %}

这是一项繁琐的工作,很容易出错,除非有必要,否则我要避免使用它。

第一个用例是否已被弃用?如果没有,为什么它不再起作用?使用其中一种是否有特定的优势?

1 个答案:

答案 0 :(得分:3)

升级到Django 1.10 +时,无法避免此更改。

使用虚线Python路径支持反转网址是deprecated in Django 1.8removed in 1.10

您必须更改{% url %}代码才能使用视图名称,例如

{% url 'view_name' %}

如果您向urls.py添加名称空间,例如app_name = 'smart_service',则必须在{% url %}标记中包含名称空间。

{% url 'smart_service:view_name' %}