2017-10-13 59 views
2

我正在運行使用NGINX和UWSGI的Django應用程序。django的urls.py的更改不反映在線

我的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) 

然而,我希望把它改成這樣:

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更新URL模式?相關問題告訴我重新啓動uwsgi或nginx,我嘗試使用sudo service uwsgi restart無濟於事。

+0

重啓刪除'urls.pyc'也許它加載它從緩存中? – Thomas

+0

你正在嘗試一些沒有在你的url conf中定義的隨機url? –

+0

@MosesKoledoye我做了,會給404頁。事實上,在這個例子中,我嘗試導航到'mywebsite/randomurltoget404page' –

回答

3

正如您在您的問題中正確提到的那樣,您需要在更改代碼後重新加載/重新啓動uWSGI服務。

如果這不起作用,則該服務正在加載緩存的數據,並且不會重新加載更改。要清除緩存的數據,請刪除全部或相應的*.pyc文件,然後重新啓動服務。

在你的情況下刪除urls.pyc,然後用sudo service uwsgi restart

+0

我從virtualenv運行我的uwsgi。如果我使用'sudo service/home/virtualenv/virtualfolder/uwsgi restart',它的工作原理是否相同? –

+1

是的,這應該是一樣的 – Thomas