標籤:方便 ase 視圖 function 路由轉寄 檔案 lease 意思 com
URL配置(URLconf)就像Django 所支撐網站的目錄。它的本質是URL模式以及要為該URL模式調用的視圖函數之間的映射表;你就是以這種方式告訴Django,對於這個URL調用這段代碼,對於那個URL調用那段代碼
URL模式
urlpatterns = [url(Regex, view函數, 參數, 別名),]
參數說明
- 一個Regex字串
- 一個可調用對象,通常為一個視圖函數或一個指定視圖函數路徑的字串
- 可選的要傳遞給視圖函數的預設參數(字典形式)
- 一個可選的name參數,接合模板方便管理
看看預設的URL的分發的檔案
"""ORM URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/1.10/topics/http/urls/Examples:Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: url(r‘^$‘, views.home, name=‘home‘)Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: url(r‘^$‘, Home.as_view(), name=‘home‘)Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r‘^blog/‘, include(‘blog.urls‘))"""from django.conf.urls import urlfrom django.contrib import adminurlpatterns = [ url(r‘^admin/‘, admin.site.urls),]
Regex的最前面的r表示raw_string 原生字串。
Regex的分組
正則表達的分組用()
無名分組
from django.conf.urls import urlfrom . import viewsurlpatterns = [ url(r‘^articles/2003/$‘, views.special_case_2003), url(r‘^articles/([0-9]{4})/$‘, views.year_archive),]
有名分組
(?p<分組名>正則文法)
from django.conf.urls import urlfrom * import viewsurlpatterns = [ url(r‘^blog/$‘, views.page), url(r‘^blog/page(?P<num>[0-9]+)/$‘, views.page),]# View (in blog/views.py)def page(request, num):retrun HttpRespouse(num)
name別名
name別名要結合模板檔案來用方便管理
例如:
urls.pyurlpatterns = [ url(r"register",views.register,name="reg"),]在html檔案中引入<form action="{% url ‘reg‘ %}" method="post">
路由轉寄站(include)
如果一個項目下有很多的app,那麼在urls.py裡面就要寫巨多的urls映射關係。這樣看起來很不靈活,而且雜亂無章。這時候就要根據不同的app來分發不同的url請求
首先,在urls.py裡寫入urls映射條目。注意要匯入include方法
from django.conf.urls import include, urlfrom django.contrib import adminurlpatterns = [ url(r‘^admin/‘, admin.site.urls), url(r‘^app01/‘, include(‘app01.urls‘)),]
這條關係的意思是將url為”app01/“的請求都交給app01下的urls去處理
其次,在app01下建立一個urls.py檔案,用來處理請求的url,使之與views建立映射
from django.conf.urls import include, urlfrom app01 import viewsurlpatterns = [url(r‘^admin/‘, admin.site.urls), url(r‘index/$‘, views.index),]
Django的URL路由