对 django urls.py 的更改未在线反映

Changes to django's urls.py not reflected online

我是 运行 一个使用 NGINX 和 UWSGI 的 Django 应用程序。

我的 URLpatterns 曾经是这样的:

urlpatterns = [
    url(r'^$', views.index),
    url(r'^binaryQuestionApp/',include('binaryQuestionApp.urls')),
    url(r'^pointlocations/',include('pointlocations.urls')),
    url(r'^attributesFromPointsApp/',include('attributesFromPointsApp.urls')),
    url(r'^admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

不过,我想改成这样:

urlpatterns = [
    url(r'^$', views.index),
    url(r'^collections/',views.collections),                  ## new line ##
    url(r'^binaryQuestionApp/',include('binaryQuestionApp.urls')),
    url(r'^pointlocations/',include('pointlocations.urls')),
    url(r'^attributesFromPointsApp/',include('attributesFromPointsApp.urls')),
    url(r'^admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

然而,在将其推送到我的服务器后(服务器上的 .py 文件确实发生了变化),我始终得到 Django 的 404 页面:

Using the URLconf defined in data_collection_project.urls, Django tried these URL patterns, in this order:
^$
^binaryQuestionApp/
^pointlocations/
^attributesFromPointsApp/
^admin/
^media\/(?P<path>.*)$
The current URL, randomurltoget404page, didn't match any of these.

如果我更改其他内容,为了测试,我可以让更改生效。例如,我可以更改 url(r'^$', views.index), 最终指向的 .html 文件,这是我网站上的更新。

如何让 Django 更新 URLpatterns?相关问题告诉我重启uwsgi或nginx,我试过使用sudo service uwsgi restart无济于事。

正如您在问题中正确提到的那样,您需要在更改代码后reload/restart uWSGI 服务。

如果这不起作用,则服务正在加载缓存数据并且不会重新加载您的更改。要清理缓存数据,请删除所有或相应的 *.pyc 文件并重新启动服务。

在你的情况下删除 urls.pyc 然后用 sudo service uwsgi restart

重新启动