python django之url控制器

2022-09-02 16:09:12 字數 3321 閱讀 2356

1.檢視層之路由配置系統(views)

url配置(urlconf)就像django所支撐**的目錄。它的本質是url與要為該url呼叫的檢視函式之間的對映表;你就是以這種方式告訴django,對於這個url呼叫這段**,對於那個url呼叫那段**。

'''

urlpatterns = [

url(正規表示式, views檢視函式,引數,別名),

]引數說明:

乙個正規表示式字串

乙個可呼叫物件,通常為乙個檢視函式或乙個指定檢視函式路徑的字串

可選的要傳遞給檢視函式的預設引數(字典形式)

乙個可選的name引數

'''

2.urlconf的正則字串引數

2.1.簡單配置

from django.conf.urls import url

##from blog import views as blog_views  #可以定義別名
from . import views urlpatterns = [ url(r'^articles/2003/$', views.special_case_2003), url(r'^articles/([0-9])/$', views.year_archive), url(r'^articles/([0-9])/([0-9])/$', views.month_archive), url(r'^articles/([0-9])/([0-9])/([0-9]+)/$', views.article_detail), ]

2.2.url匹配的特點

1 一旦匹配成功則不再繼續

2 若要從url 中捕獲乙個值,只需要在它周圍放置一對圓括號。

3 不需要新增乙個前導的反斜槓,因為每個url 都有。例如,應該是^articles 而不是 ^/articles。

4 每個正規表示式前面的'r' 是可選的但是建議加上。

2.3.無名分組

url(r'article/(\d+)/(\d+)$',blog_views.article_yearmonth ), # article_yearmonth(request,2009,12)

分組會將括號中的內容當成實參傳入到request的後邊。傳引數方式等於位置傳參。

2.4.有名分組(named group) 傳參方式等同於關鍵字傳參,不受位置影響。

例子:

url(r'^blog/article/(?p<

year_id

>\d+)/(?p<

month_id

>\d+)$',blog_views.article_yearmonth ) # article_yearmonth(request,year_id=2009,month_id=12)

2.5.url 分發

所有應用的url匹配規則只寫到乙個urls中,需要寫好多條記錄,這樣不方便除錯,看起來也很混亂。所有就需要用到路由分發,即將每個應用的url匹配規則分發定義到各自的應用中去,專案中的url值定義到應用的分發規則即可。

例子:

# 路由分發

url(r'^blog/', include('blog.urls')), #將所有跟blog相關的url解析規則放到 blog應用中去。

2.6. url方向解析(url中的別名引數)

在使用django 專案時,乙個常見的需求是獲得url 的最終形式,以用於嵌入到生成的內容中(檢視中和顯示給使用者的url等)或者用於處理伺服器端的導航(重定向等)。

人們強烈希望不要硬編碼這些url(費力、不可擴充套件且容易產生錯誤)或者設計一種與urlconf 毫不相關的專門的url 生成機制,因為這樣容易導致一定程度上產生過期的url。

換句話講,需要的是乙個dry 機制。除了其它有點,它還允許設計的url 可以自動更新而不用遍歷專案的源**來搜尋並替換過期的url。

獲取乙個url 最開始想到的資訊是處理它檢視的標識(例如名字),查詢正確的url 的其它必要的資訊有檢視引數的型別(位置引數、關鍵字引數)和值。

django 提供乙個辦法是讓url 對映是url 設計唯一的地方。你填充你的urlconf,然後可以雙向使用它:

第一種方式是我們在前面的章節中一直討論的用法。第二種方式叫做反向解析url、反向url 匹配、反向url 查詢或者簡單的url 反查。

在需要url 的地方,對於不同層級,django 提供不同的工具用於url 反查:

例子:專案中的url這麼寫

return httpresponse("登入成功!")

return render(request,"login.html")

通過login函式找到需要請求  login.html這個頁面

login頁面內容如下:

doctype html

>

<

html

lang

="en"

>

<

head

>

<

meta

charset

="utf-8"

>

<

title

>title

title

>

head

>

<

body

>

<

form

action

=""method

="post"

>

<

p>姓名 <

input

type

="text"

name

="user"

>

p>

<

p>密碼 <

input

type

="password"

name

="pwd"

>

p>

<

input

type

="submit"

>

form

>

body

>

html

>

python Django之html模板繼承

django之html模板繼承簡單案例 構建母板,確定不變內容和可變內容 構建子板,對可變內容進行填充 結果 定義乙個基礎模板,該框架之後由子模板繼承。命名為base.html,這個頁面主要放公用部分的 各個子頁面都可以繼承這個頁面的樣式。首頁 編寫各個子模板。如下所示,作為基礎模板,必須放在第一行...

node工程預設url nodejs之url模組

鄙人初步學習nodejs,目前在讀 nodejs入門 這一本書,書很小,但是讓我知道了如何用nodejs建立乙個簡單的小專案。例如如何建立乙個伺服器啦,例如http.createserver,還有根據不同的請求路徑來設定路由選擇啦,模組引入,建立模組啦,巴拉巴拉的東西。現在還沒有看完這本書,看完了再...

Python Django之密碼的加密和解密

在 django 1.5 之前,django 對於使用者密碼的加密方式一直是 sha1,存在資料庫的樣例如下 sha1 1bb66 f6c9b132a39287884997412e c7b6c8a543c79a06 但在 django 1.5 之後,密碼的加密方式預設改為了 pbkdf2 演算法與 ...