我正在将Django项目从Django 1.11升级到Django 2.1.7,在将所有URL模式更改为Django 2的处理方式后,我在url上收到了很多误报。W001警告当我执行manage.py runserver时。
示例:
?: (urls.W001) Your URL pattern '^some-pattern/$' [name='some_name'] uses include with a route ending with a '$'. Remove the dollar from the route to avoid problems including URLs.
但是,当我查看urls.py文件中的URL模式时,绝对没有^或$。
path('some-pattern/', views.some_view_function, name='some_name'),
我已经吹走了本地的virtualenv和我的Vagrant盒子,并从头开始,只是为了确保它不是某个地方缠绵的编译内容,但是从头开始时的行为是相同的。
还有其他人遇到吗?该应用程序本身似乎运行良好,我只是对Django可能看到的代码中不存在的东西感到困惑。
感谢任何人可能提出的任何想法。
答案 0 :(得分:1)
当我在我的PC上运行了两个django项目时,发生在我身上的事情是,如果您不使用虚拟环境,事情就会变得一团糟,并且总是进入相同的路径列表。
我将首先更改您尝试访问的路线的名称,以便您知道是否要去检查路线列表
接下来要小心,因为使用路径路由 path('this-way / ...与path('/ this-way /'...不同 path('this-way / ...将'/ this-way /'添加到浏览器的方向 示例:https://localhost:8000/login更改为https://localhost:8000/login/this-way/ 这就是美元可能来自的地方
答案 1 :(得分:1)
结果证明这确实与Django CMS有关-这是他们的第一个发行版,支持Django 2,但它仍然也支持Django 1.11,因此他们在某些方面以及当它引入URL时降低了中间值对于我们的apphooks,它们被转换为带有^和$的模式。希望信息可以帮助其他可能遇到此问题的人。感谢您的所有建议!
答案 2 :(得分:1)
正如@matt所说,罪魁祸首是Django CMS过渡到Django 2.0。
我已将警告静音
SILENCED_SYSTEM_CHECKS = ['urls.W001']
在settings.py