的原因,我回答這個問題,是因爲它是幾年前回答這些問題的答案是不正確的或有用了較新的Django版本,或者有一個更好的做法,你應該知道。
因此,如果您的Django項目中有多個應用程序,那麼您應該爲每個應用程序使用一個新的urls.py文件。這意味着如果您啓動一個新的應用程序,那麼您必須在新應用程序的子文件夾中手動創建一個名爲urls.py的新文件。許多初學者首先不明白爲什麼這很好,但如果您計劃在一個Django項目中創建更多應用程序,這是一個很好的做法。
當你開始一個項目時,urls.py文件會自動在你的項目文件夾中創建,但是如果你在Django中創建/啓動一個新的應用程序,那麼這是一個很好的做法,如果你爲此創建了一個單獨的urls.py應用程序在自己的文件夾。 (這樣你就永遠不會有「首先將不同應用的視圖導入到urls.py」問題)。
您創建了您的應用程序的urls.py文件後,那麼你必須包括,在項目的urls.py文件的應用程序的urls.py文件以下列方式:
我們先來看看一個例子你創建一個名爲'my_new_app'的新應用程序。 這是項目的主urls.py文件應該如何看起來像:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^my_new_app/', include('my_new_app.urls')),
]
在項目的urls.py文件,你必須導入「包括」方法,那麼你可以包括你的my_new_app urls.py文件您的項目的主要urls.py文件。在您的my_new_app文件夾中,您必須手動創建一個urls.py文件,如上所述。然後你必須使用該文件來處理my_new_app的所有urlpatterns。那麼當然這樣它會被自動包含在你的項目的主要urls.py文件中。
所以這就是那麼你my_new_app自己urls.py文件應該如何看起來像:
from django.conf.urls import url
from my_new_app import views
urlpatterns = [
url(r'^$', views.index, name = "index"),
]
假設你也是你的「my_new_app/views.py文件創建一個名爲「索引」的第一圖。
my_new_app/views.py文件是這樣的:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello World!")
而且你可以在瀏覽器在檢查my_new_app:
http://localhost:8000/my_new_app
(當然,你可以給任何網址到my_new_app在您的項目的urls.py文件中。)
現在,您可以在您的Django項目中創建另一個名爲my_second_app的應用程序,並且您應該爲該應用程序重複上述步驟。這樣,您將不會有任何問題將來自不同應用的視圖導入到urls.py文件中。對於Django 1.11中的這個問題,這將是一個非常基本的「良好實踐解決方案」。
這沒有奏效,但謝謝你的建議。 – William 2012-07-11 19:09:33
@羅伯特:有幾個拼寫錯誤(我固定),除了這是一個工作解決方案。您不必將我們的答案複製並粘貼到代碼中,最好了解它們並找到解決問題的方法。你也可以自由地[接受](http://meta.stackexchange.com/a/5235/177799)幫助你的答案。 – 2012-07-11 19:22:13
Rik,你通過Simon Visser的第二個建議,確實也有效。謝謝。 – William 2012-07-11 20:22:53