Django視圖[URLconf]

URLconf

用戶通過在瀏覽器的地址欄中輸入網(wǎng)址請求網(wǎng)站,對于Django開發(fā)的網(wǎng)站,由哪一個視圖進行處理請求,是由url匹配找到的。

配置

1)在test3/settings.py中通過ROOT_URLCONF指定url配置,默認(rèn)已經(jīng)有此配置。

ROOT_URLCONF = 'test3.urls'

2)打開test3/urls.py可以看到默認(rèn)配置。

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
url(r'^admin/',admin.site.urls)
]

注意點

  • 在test3/urls.py中進行包含配置,在各自應(yīng)用中創(chuàng)建具體配置。
  • 定義urlpatterns列表,存儲url()對象,這個名稱是固定的。

urlpatterns中的每個正則表達式在第一次訪問它們時被編譯,這使得運行很快。

語法

url()對象,被定義在django.conf.urls包中,有兩種語法結(jié)構(gòu):

語法一: 包含,一般在自定義應(yīng)用中創(chuàng)建一個urls.py來定義url。
  • 這種語法用于test3/urls.py中,目的是將應(yīng)用的urls配置到應(yīng)用內(nèi)部,數(shù)據(jù)更清晰并且易于維護。
    url(正則,include('應(yīng)用.urls'))
1)在test3/urls.py文件,包含booktest中的urls。

url(r'^',include('booktest.urls')),

2) 在booktest目錄下創(chuàng)建urls.py文件
語法二: 定義,指定URL和視圖函數(shù)的對應(yīng)關(guān)系。在應(yīng)用內(nèi)部創(chuàng)建urls.py文件,指定請求地址與視圖的對應(yīng)關(guān)系。

url(正則,'視圖函數(shù)名稱')
1)######如示例在booktest/urls.py中創(chuàng)建首頁的url,代碼如下

from django.conf.urls import url
from booktest import views
urlpatterns=[
url(r'^$',views.index),
]

2)如示例在booktest/views.py中創(chuàng)建視圖index

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
return HttpResponse("視圖函數(shù)index")

  • 說明1:正則部分推薦使用r,表示字符串不轉(zhuǎn)義,這樣在正則表達式中使用\只寫一個就可以。 說明2:不能在開始加反斜杠,推薦在結(jié)束加反斜杠。



  • 獲取值請求的url被看做是一個普通的python字符串,進行匹配時不包括域名、get或post參數(shù)。 如請求地址如下:
    http://127.0.0.1:8000/delete1/?a=10
1)去除掉域名和參數(shù)部分,并將最前面的/去除后,只剩下如下部分與正則匹配。

delete1/

2)打開booktest/urls.py文件,定義與這個地址匹配的url如下:

url(r'^delete\d+/$',views.show_arg),

3)在booktest/views.py中創(chuàng)建視圖show_arg。

def show_arg(request):
return HttpResponse('show_arg')

4)啟動服務(wù)器,輸入上面的網(wǎng)址,瀏覽器中效果如下圖。
可以在匹配過程中從url中捕獲參數(shù),每個捕獲的參數(shù)都作為一個普通的python字符串傳遞給視圖。
獲取值需要在正則表達式中使用小括號,分為兩種方式:

  • 位置參數(shù)
  • 關(guān)鍵字參數(shù)
  • 注意:兩種參數(shù)的方式不要混合使用,在一個正則表達式中只能使用一種參數(shù)方式。
方式一:位置參數(shù)直接使用小括號,通過位置參數(shù)傳遞給視圖。

1)為了提取參數(shù),修改上面的正則表達式如下:
url(r'^delete(\d+)/$',views.show_arg),

2)修改視圖show_arg如下:
注意:參數(shù)的名字是任意的如a1、b8,盡量做到見名知意。
def show_arg(request,id):
return HttpResponse('show arg %s'%id)

4)在地址欄輸入如下地址:
http://127.0.0.1:8000/2/?a=10

5)瀏覽器頁面效果如下圖

方式二:關(guān)鍵字參數(shù)

在正則表達式部分為組命名。

1)修改正則表達式如下:
  • 其中?P部分表示為這個參數(shù)定義的名稱為id,可以是其它名稱,起名做到見名知意。
    url(r'^delete(?P<id1>\d+)/$',views.show_arg),
2)修改視圖show_arg如下:
  • 注意:視圖show_arg此時必須要有一個參數(shù)名為id1,否則報錯。

def show_arg(request,id1):
return HttpResponse('show %s'%id1)

3)刷新瀏覽器頁面,效果如下圖

show_avg:3



視圖

視圖就是python中的函數(shù),視圖一般被定義在"應(yīng)用/views.py"文件中,此例中為"booktest/views.py"文件。視圖必須返回一個HttpResponse對象或子對象作為響應(yīng)。響應(yīng)可以是一張網(wǎng)頁的HTML內(nèi)容,一個重定向,一個404錯誤等。

視圖的第一個參數(shù)必須為HttpRequest實例,還可能包含下參數(shù)如:

  • 通過正則表達式組獲得的關(guān)鍵字參數(shù)。
  • 通過正則表達式組獲取的位置參數(shù)。



內(nèi)置錯誤視圖Django內(nèi)置處理HTTP錯誤的視圖,主要錯誤及視圖包括:

  • 如果想看到錯誤視圖而不是調(diào)試信息,需要修改test3/setting.py文件的DEBUG項。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內(nèi)容

  • URLconf 用戶通過在瀏覽器的地址欄中輸入網(wǎng)址請求網(wǎng)站,對于Django開發(fā)的網(wǎng)站,由哪一個視圖進行處理請求,...
    IT的咸魚閱讀 242評論 0 2
  • 切換到創(chuàng)建項目的目錄 cd C:\Users\admin\Desktop\DjangoProject創(chuàng)建名為pr...
    在努力中閱讀 3,305評論 2 3
  • 模塊間聯(lián)系越多,其耦合性越強,同時表明其獨立性越差( 降低耦合性,可以提高其獨立性)。軟件設(shè)計中通常用耦合度和內(nèi)聚...
    riverstation閱讀 2,088評論 0 8
  • Web框架之Django: (1)簡介: Django是一個由Python寫成開源的重量級Web應(yīng)用框架,采用MT...
    老肖閱讀 3,075評論 0 18
  • 已經(jīng)同步到gitbook,想閱讀的請轉(zhuǎn)到gitbook: Django 1.10 中文文檔 URL dispatc...
    leyu閱讀 14,240評論 0 16