Views和URL

網(wǎng)頁程序的邏輯

request進(jìn)來->從服務(wù)器獲取數(shù)據(jù)->處理數(shù)據(jù)->把網(wǎng)頁呈現(xiàn)出來

url設(shè)置相當(dāng)于客戶端向服務(wù)器發(fā)出request請求的入口, 并用來指明要調(diào)用的程序邏輯

views用來處理程序邏輯, 然后呈現(xiàn)到template(一般為GET方法,POST方法略有不同)

template一般為html+CSS的形式, 主要是呈現(xiàn)給用戶的表現(xiàn)形式

簡單Django Views和URL

Django中views里面的代碼就是一個(gè)一個(gè)函數(shù)邏輯, 處理客戶端(瀏覽器)發(fā)送的HTTPRequest, 然后返回HTTPResponse,

那么那么開始在my_blog/article/views.py中編寫簡單的邏輯

#現(xiàn)在你的views.py應(yīng)該是這樣

from django.shortcuts import render

from django.http import HttpResponse

# Create your views here.

def home(request):

return HttpResponse("Hello World, Django")

那么如何使這個(gè)邏輯在http請求進(jìn)入時(shí), 被調(diào)用呢, 這里需要在my_blog/my_blog/urls.py中進(jìn)行url設(shè)置

from django.conf.urls import patterns, include, url

from django.contrib import admin

urlpatterns = patterns('',

# Examples:

# url(r'^$', 'my_blog.views.home', name='home'),

# url(r'^blog/', include('blog.urls')),

url(r'^admin/', include(admin.site.urls)),

url(r'^$', 'article.views.home'),? #由于目前只有一個(gè)app, 方便起見, 就不設(shè)置include了

)


url()函數(shù)有四個(gè)參數(shù), 兩個(gè)是必須的:regex和view, 兩個(gè)可選的:kwargs和name

regex是regular expression的簡寫,這是字符串中的模式匹配的一種語法, Django 將請求的URL從上至下依次匹配列表中的正則表達(dá)式莹菱,直到匹配到一個(gè)為止。

更多正則表達(dá)式的使用可以查看Python正則表達(dá)式

view當(dāng) Django匹配了一個(gè)正則表達(dá)式就會(huì)調(diào)用指定的view邏輯, 上面代碼中會(huì)調(diào)用article/views.py中的home函數(shù)

kwargs任意關(guān)鍵字參數(shù)可傳一個(gè)字典至目標(biāo)view

name命名你的 URL, 使url在 Django 的其他地方使用, 特別是在模板中

現(xiàn)在在瀏覽器中輸入127.0.0.1:8000應(yīng)該可以看到下面的界面

Django Views和URL更近一步

很多時(shí)候我們希望給view中的函數(shù)邏輯傳入?yún)?shù), 從而呈現(xiàn)我們想要的結(jié)果

現(xiàn)在我們這樣做, 在my_blog/article/views.py加入如下代碼:

def detail(request, my_args):

return HttpResponse("You're looking at my_args %s." % my_args)

在my_blog/my_blog/urls.py中設(shè)置對應(yīng)的url,

urlpatterns = patterns('',

# Examples:

# url(r'^$', 'my_blog.views.home', name='home'),

# url(r'^blog/', include('blog.urls')),

url(r'^admin/', include(admin.site.urls)),

url(r'^$', 'article.views.home'),

url(r'^(?P\d+)/$', 'article.views.detail', name='detail'),

)

^(?P\d+)/$這個(gè)正則表達(dá)式的意思是將傳入的一位或者多位數(shù)字作為參數(shù)傳遞到views中的detail作為參數(shù), 其中?P定義名稱用于標(biāo)識匹配的內(nèi)容

一下url都能成功匹配這個(gè)正則表達(dá)數(shù)

http://127.0.0.1:8000/1000/

http://127.0.0.1:8000/9/

嘗試傳參訪問數(shù)據(jù)庫

修改在my_blog/article/views.py代碼:

from django.shortcuts import render

from django.http import HttpResponse

from article.models import Article

# Create your views here.

def home(request):

return HttpResponse("Hello World, Django")

def detail(request, my_args):

post = Article.objects.all()[int(my_args)]

str = ("title = %s, category = %s, date_time = %s, content = %s"

% (post.title, post.category, post.date_time, post.content))

return HttpResponse(str)

這里最好在admin后臺管理界面增加幾個(gè)Article對象, 防止查詢對象為空, 出現(xiàn)異常

現(xiàn)在可以訪問http://127.0.0.1:8000/1/

顯示如下數(shù)據(jù)表示數(shù)據(jù)庫訪問正確(這些數(shù)據(jù)都是自己添加的), 并且注意Article.objects.all()返回的是一個(gè)列表

小結(jié):

如何編寫views和設(shè)置url

如何通過url向views傳參

如何通過參數(shù)來訪問數(shù)據(jù)庫資源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子荐健,更是在濱河造成了極大的恐慌瘤袖,老刑警劉巖吼驶,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翼抠,死亡現(xiàn)場離奇詭異,居然都是意外死亡扼鞋,警方通過查閱死者的電腦和手機(jī)申鱼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來云头,“玉大人捐友,你說我怎么就攤上這事±;保” “怎么了匣砖?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長昏滴。 經(jīng)常有香客問我猴鲫,道長,這世上最難降的妖魔是什么谣殊? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任拂共,我火速辦了婚禮,結(jié)果婚禮上姻几,老公的妹妹穿的比我還像新娘宜狐。我一直安慰自己势告,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布抚恒。 她就那樣靜靜地躺著咱台,像睡著了一般。 火紅的嫁衣襯著肌膚如雪俭驮。 梳的紋絲不亂的頭發(fā)上回溺,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機(jī)與錄音表鳍,去河邊找鬼。 笑死祥诽,一個(gè)胖子當(dāng)著我的面吹牛譬圣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雄坪,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼厘熟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了维哈?” 一聲冷哼從身側(cè)響起绳姨,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阔挠,沒想到半個(gè)月后飘庄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡购撼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年跪削,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迂求。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碾盐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出揩局,到底是詐尸還是另有隱情毫玖,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布凌盯,位于F島的核電站付枫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏驰怎。R本人自食惡果不足惜励背,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望砸西。 院中可真熱鬧叶眉,春花似錦址儒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饱溢,卻和暖如春喧伞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绩郎。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工潘鲫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肋杖。 一個(gè)月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓溉仑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親状植。 傳聞我的和親對象是個(gè)殘疾皇子浊竟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

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