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

Mit*_*len 2 python django nginx uwsgi

我正在使用NGINX和UWSGI运行Django应用程序。

我的URL模式曾经是这样的:

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)
Run Code Online (Sandbox Code Playgroud)

但是,我希望将其更改为:

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)
Run Code Online (Sandbox Code Playgroud)

然而,将其推送到我的服务器(并且.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.
Run Code Online (Sandbox Code Playgroud)

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

如何让Django更新URL模式?相关问题告诉我重新启动uwsgi或nginx,我尝试使用sudo service uwsgi restart它们都无济于事。

Tho*_*rzl 6

正如您在问题中正确提到的那样,更改代码后,需要重新加载/重新启动uWSGI服务。

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

在您的情况下,删除urls.pyc然后重新启动sudo service uwsgi restart