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

Django named URL parameters no longer working after upgrade to 1.10 or 1.11

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

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

到目前为止效果很好,但是在更新到 1.10 版后就没有任何效果了,任何使用都是这样 returns NoReverseMatch.

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

{% url 'smart_service:view_name' %}

这是一项繁琐的任务,很容易出错,除非绝对必要,否则我想避免它。

第一个用例是否已弃用?如果没有,为什么它不再工作了?使用其中一种有什么具体优势吗?

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

使用虚线 Python 路径反转 url 的支持是 deprecated in Django 1.8 and removed in 1.10

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

{% url 'view_name' %}

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

{% url 'smart_service:view_name' %}