urlpatterns 在url文件中是一個url映射列表。在1.8之後的django版本中可直接爲列表形式或者也能夠用patterns函數生成。在1.7及之前的版本中則是由patterns函數生成。系統會自動遍歷url文件中的urlpatterns列表而後進行對應的處理函數查找。當url有重複的狀況則以找到的第一個爲準。html
#urls.py from app import views #這裏的app是你本身的應用的名字 from django.urls import path urlpatterns = [ path('index/', views.index, name='index'), ]
該方法對應view.py中的函數爲:django
#views.py def index(request): ... return render(request,'index.html')
#urls.py from app.views import LoginView from django.urls import path urlpatterns = [ path('login/', LoginView.as_view(), name='login'), ]
該方法對應的view.py中爲:app
#views.py class LoginView(View): #請求爲get時 def get(self,request): ... return render(request, 'login.html') #請求爲post時 def post(self,request): ... return render(request,'login.html')
當你從其餘地方好比你的應用中也新建了一個文件叫urls.py,這是能夠用第三種方法:函數
3.導入其餘的URL文件(適用於urls.py文件不止一個時)post
#urls.py(系統默認的) from django.urls import include, path urlpatterns = [ path('login/', include('app.urls'))#假設本身新建的urls在app(應用中) ]
若以爲上述方法依然不夠逼格,能夠試試正則形式的urlpatterns,具體用法爲網站
導入包時由url
from django.urls import path
更改成spa
from django.urls import re_path
相應的urlpatterns構造也變爲code
urlpatterns = [ re_path(r'^articles/(?P<year>[0-9]{4})/$', view.year, name='article'), re_path(r'^blog/(page-(\d+)/)?$',blog_articles), ]
這樣子能夠很方便的匹配到具體某一年的文章,而不用對「每年」都寫一個path,這樣子能夠極大的減輕工做量。htm
#urls.py from app.views import LoginView from django.conf.urls import url #注意這裏 urlpatterns = [ url(r'^login/$', LoginView.as_view(), name='login'), #還有這裏 ]
總結:
path方法適用於頁面較少的網站,re_path能夠利用正則表達的優點適用於較多的頁面的網站
如有興趣能夠上官網看一下
當你的項目上線時則須要對這些錯誤進行本身的定義,總不能人家去訪問你的頁面了,404仍是django的錯誤頁面吧。。。
本身定義時則需進行全局定義
即不能包含在上述urlpatterns中
#urls.py handler404 = 'app.views.page_not_found'