Django的URL路由

來源:互聯網
上載者:User

標籤:方便   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路由

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.