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'