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 演算法與 ...