摘要:比如,在一個(gè)博客應(yīng)用中,你可能會(huì)創(chuàng)建如下幾個(gè)視圖博客首頁(yè)展示最近的幾項(xiàng)內(nèi)容。這些需求都靠視圖來(lái)完成。首先寫(xiě)一個(gè)最簡(jiǎn)單的視圖函數(shù),在瀏覽器中打印出字符串。調(diào)用函數(shù)時(shí)會(huì)返回一個(gè)含字符串的對(duì)象。換句話說(shuō),的作用是將映射到視圖中。
Django 中的視圖的概念是「一類(lèi)具有相同功能和模板的網(wǎng)頁(yè)的集合」。比如,在一個(gè)博客應(yīng)用中,你可能會(huì)創(chuàng)建如下幾個(gè)視圖:
博客首頁(yè):展示最近的幾項(xiàng)內(nèi)容。
內(nèi)容“詳情”頁(yè):詳細(xì)展示某項(xiàng)內(nèi)容。
評(píng)論處理器:用于響應(yīng)為一項(xiàng)內(nèi)容添加評(píng)論的操作。
這些需求都靠視圖(View)來(lái)完成。
Hello World!首先寫(xiě)一個(gè)最簡(jiǎn)單的視圖函數(shù),在瀏覽器中打印出Hello World!字符串。
打開(kāi)article/views.py,寫(xiě)出視圖函數(shù):
article/views.py # 導(dǎo)入 HttpResponse 模塊 from django.http import HttpResponse # 視圖函數(shù) def article_list(request): return HttpResponse("Hello World!")
在 Django 中,網(wǎng)頁(yè)都是從視圖派生而來(lái)。每一個(gè)視圖表現(xiàn)為一個(gè)簡(jiǎn)單的 Python 函數(shù),它必須要做的只有兩件事:返回一個(gè)包含被請(qǐng)求頁(yè)面內(nèi)容的 HttpResponse對(duì)象,或者拋出一個(gè)異常,比如 Http404 。至于你還想干些什么,隨便你。
視圖函數(shù)中的request與網(wǎng)頁(yè)發(fā)來(lái)的請(qǐng)求有關(guān),里面包含get或post的內(nèi)容、用戶瀏覽器、系統(tǒng)等信息。Django調(diào)用article_list函數(shù)時(shí)會(huì)返回一個(gè)含字符串的 HttpResponse對(duì)象。
有了視圖函數(shù),還需要配置URLconfs,將用戶請(qǐng)求的URL鏈接關(guān)聯(lián)起來(lái)。換句話說(shuō),URLconfs的作用是將URL映射到視圖中。
在前面的文章中已經(jīng)將項(xiàng)目/article的URL分發(fā)給了article應(yīng)用,因此這里只需要修改之前添加的article/urls.py就可以。添加以下代碼:
article/urls.py # 引入views.py from . import views ... urlpatterns = [ # path函數(shù)將url映射到視圖 path("article-list/", views.article_list, name="article_list"), ]
Django 將會(huì)根據(jù)用戶請(qǐng)求的 URL 來(lái)選擇使用哪個(gè)視圖。本例中當(dāng)用戶請(qǐng)求article/article-list鏈接時(shí),會(huì)調(diào)用views.py中的article_list函數(shù),并返回渲染后的對(duì)象。參數(shù)name用于反查url地址,相當(dāng)于給url起了個(gè)名字,以后會(huì)用到。
測(cè)試一下剛才敲的代碼是否工作正常。
在虛擬環(huán)境中,進(jìn)入項(xiàng)目目錄,也就是my_blog文件夾,輸入python manage.py runserver,運(yùn)行調(diào)試服務(wù)器:
(env) E:django_projectmy_blog>python manage.py runserver Performing system checks... System check identified no issues (0 silenced). August 30, 2018 - 19:41:00 Django version 2.1, using settings "my_blog.settings" Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
成功運(yùn)行后,打開(kāi)瀏覽器,輸入url地址http://127.0.0.1:8000/article/article-list/,其中127.0.0.1:8000是調(diào)試服務(wù)器的本地地址,article是項(xiàng)目路由my_blogurls.py分發(fā)的地址,article-list是剛才配置的articleurls.py應(yīng)用分發(fā)的地址。
運(yùn)氣好的話,瀏覽器中會(huì)打印出Hello World!字符串:
不到10行代碼就完成了基本功能,是不是很神奇。
當(dāng)然,只是小試牛刀。
準(zhǔn)備工作在前面章節(jié)編寫(xiě)Model模型中雖然定義了數(shù)據(jù)庫(kù)表,但是這個(gè)表是空的,不方便展示View調(diào)取數(shù)據(jù)的效果。所以在寫(xiě)View之前,需要往數(shù)據(jù)表里記錄一些數(shù)據(jù)。接下來(lái)就做這個(gè)工作。
網(wǎng)站后臺(tái)概念網(wǎng)站后臺(tái),有時(shí)也稱(chēng)為網(wǎng)站管理后臺(tái),是指用于管理網(wǎng)站的一系列操作,如:數(shù)據(jù)的增加、更新、刪除等。在項(xiàng)目開(kāi)發(fā)的初期,因?yàn)闆](méi)有真實(shí)的用戶數(shù)據(jù)和完整的測(cè)試環(huán)境,會(huì)頻繁地使用后臺(tái)修改測(cè)試數(shù)據(jù)。
幸運(yùn)的是Django內(nèi)置了一個(gè)很好的后臺(tái)管理工具,只需要些少量代碼,就可以實(shí)現(xiàn)強(qiáng)大的功能。
創(chuàng)建管理員賬號(hào)(Superuser)管理員賬號(hào)(Superuser)是可以進(jìn)入網(wǎng)站后臺(tái),對(duì)數(shù)據(jù)進(jìn)行維護(hù)的賬號(hào),具有很高的權(quán)限。這里我們需要?jiǎng)?chuàng)建一個(gè)管理員賬號(hào),以便添加后續(xù)的測(cè)試數(shù)據(jù)。
虛擬環(huán)境中輸入python manage.py createsuperuser指令,創(chuàng)建管理員賬號(hào):
(env) E:django_projectmy_blog>python manage.py createsuperuser Username: dusai Email address: dusaiphoto@foxmail.com Password: Password (again): Superuser created successfully.
指令會(huì)提示你輸入賬號(hào)名字、郵箱和密碼,根據(jù)喜好填入即可創(chuàng)建成功。
將ArticlePost注冊(cè)到后臺(tái)中接下來(lái)我們需要“告訴”Django,后臺(tái)中需要添加ArticlePost這個(gè)數(shù)據(jù)表供管理。
打開(kāi)article/admin.py,寫(xiě)入以下代碼:
article/admin.py from django.contrib import admin # 別忘了導(dǎo)入ArticlerPost from .models import ArticlePost # 注冊(cè)ArticlePost到admin中 admin.site.register(ArticlePost)
這樣就簡(jiǎn)單的注冊(cè)好了。
在后臺(tái)中遨游細(xì)心的同學(xué)可能已經(jīng)發(fā)現(xiàn),Django項(xiàng)目生成的時(shí)候就自動(dòng)配置好了后臺(tái)的settings和url,因此不需要我們?cè)俨傩牧恕?/p>
啟動(dòng)server,在瀏覽器中輸入http://127.0.0.1:8000/admin/,一切正常的話就看到下面的登錄界面了:
輸入剛才創(chuàng)建的管理員賬號(hào),登錄進(jìn)去:
紅框內(nèi)就是剛才添加的ArticlePost數(shù)據(jù)表,點(diǎn)擊進(jìn)入后,再點(diǎn)擊右上角的ADD ARTICLE POST按鈕,到達(dá)如下頁(yè)面:
仔細(xì)看一下表單中的每一項(xiàng),發(fā)現(xiàn)與ArticlePost中的字段完全符合;因?yàn)?b>updated字段指定了自動(dòng)添加,這里就沒(méi)顯示了。
將表單填好后,點(diǎn)擊保存:
可以看到ARTICLE POST中多了剛才錄入的一條數(shù)據(jù)。按照同樣的方法,再寫(xiě)入幾條數(shù)據(jù):
至此準(zhǔn)備工作就已經(jīng)大功告成。
檢視數(shù)據(jù)庫(kù)2018-10-29 新增內(nèi)容
通過(guò)上面的操作,我們的數(shù)據(jù)庫(kù)中已經(jīng)有1條用戶數(shù)據(jù)、3條文章數(shù)據(jù)了。有的時(shí)候我需要檢查數(shù)據(jù)庫(kù)中的數(shù)據(jù)是否正確,但是項(xiàng)目中的數(shù)據(jù)庫(kù)文件db.sqlite3又無(wú)法直接打開(kāi),怎么辦呢?
這時(shí)候就需要用到專(zhuān)門(mén)處理SQLite數(shù)據(jù)文件的軟件了:SQLiteStudio
下載并安裝,用它打開(kāi)db.sqlite3,軟件導(dǎo)航欄中就出現(xiàn)了數(shù)據(jù)庫(kù)中保存的各類(lèi)數(shù)據(jù)列表。比如說(shuō)auth_user就是用戶數(shù)據(jù)表了:
你可以用它檢查項(xiàng)目代碼中數(shù)據(jù)庫(kù)的操作是否正常,這在開(kāi)發(fā)階段是非常實(shí)用的。
總結(jié)本章初步感受了View的工作模式,創(chuàng)建了Superuser在后臺(tái)錄入了幾條測(cè)試數(shù)據(jù)。
下一章將編寫(xiě)更有意義的View,準(zhǔn)備好后老司機(jī)就開(kāi)車(chē)了。
有疑問(wèn)請(qǐng)?jiān)诙刨惖膫€(gè)人網(wǎng)站留言,我會(huì)盡快回復(fù)。
或Email私信我:dusaiphoto@foxmail.com
項(xiàng)目完整代碼:Django_blog_tutorial
轉(zhuǎn)載請(qǐng)告知作者并注明出處。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/42461.html
摘要:改寫(xiě)視圖函數(shù)上一章我們感受了視圖的工作流程。循壞表示依次取出中的元素,命名為,并分別執(zhí)行接下來(lái)操作。即為語(yǔ)言,中間包裹了一個(gè)段落的文字。有疑問(wèn)請(qǐng)?jiān)诙刨惖膫€(gè)人網(wǎng)站留言,我會(huì)盡快回復(fù)。 改寫(xiě)視圖函數(shù) 上一章我們感受了視圖的工作流程。 為了讓視圖真正發(fā)揮作用,改寫(xiě)article/views.py中的article_list視圖函數(shù): article/views.py from django...
摘要:有編程基礎(chǔ)的同學(xué)都知道,類(lèi)是面向?qū)ο蠹夹g(shù)中非常重要的概念。有區(qū)別的是,是作為功能添加到子類(lèi)中的,而不是作為父類(lèi)。首先調(diào)用父類(lèi)方法,將這個(gè)對(duì)象賦值給變量,然后再對(duì)其進(jìn)行統(tǒng)計(jì)瀏覽量的操作,最后將對(duì)象返回。 說(shuō)是完結(jié),馬上又開(kāi)始寫(xiě)進(jìn)階篇了。 本章不會(huì)為博客項(xiàng)目增加新功能,但是也同樣重要,因?yàn)槲覀円獙W(xué)習(xí)高逼格的基于類(lèi)的視圖。 什么是類(lèi)視圖 前面章節(jié)中寫(xiě)的所有視圖都是基于函數(shù)的,即def;而類(lèi)視...
摘要:接下來(lái)你就可以在項(xiàng)目的任何地方發(fā)送通知了像這樣其中的參數(shù)釋義發(fā)送通知的對(duì)象接收通知的對(duì)象動(dòng)詞短語(yǔ)鏈接到動(dòng)作的對(duì)象可選執(zhí)行通知的對(duì)象可選有點(diǎn)繞,舉個(gè)栗子杜賽在搭建個(gè)人博客中對(duì)你發(fā)表了評(píng)論。有疑問(wèn)請(qǐng)?jiān)诙刨惖膫€(gè)人網(wǎng)站留言,我會(huì)盡快回復(fù)。 憑借你勤奮的寫(xiě)作,拜讀你文章的用戶越來(lái)越多,他們的評(píng)論也分散在眾多的文章之中。作為博主,讀者的留言肯定是要都看的;而讀者給你留言,自然也希望得到回復(fù)。 怎么...
摘要:在里寫(xiě)一個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的應(yīng)用的第一步是定義模型,也就是數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)和附加的其它元數(shù)據(jù)。模型元數(shù)據(jù)是任何不是字段的東西,例如排序選項(xiàng)數(shù)據(jù)庫(kù)表名單數(shù)和復(fù)數(shù)名稱(chēng)和。 Django 框架主要關(guān)注的是模型(Model)、模板(Template)和視圖(Views),稱(chēng)為MTV模式。 它們各自的職責(zé)如下: 層次 職責(zé) 模型(Model),即數(shù)據(jù)存取層 處理與數(shù)據(jù)相關(guān)的所有事務(wù): 如何存取...
摘要:聲明本渣渣部分代碼參考自其實(shí)有很多代碼是不需要自己一行行碼出來(lái),生產(chǎn)力是第一位。只有研究型人才需要生產(chǎn)代碼,作為一名渣渣拿來(lái)用是最高效的做法。程序員都有一個(gè)開(kāi)源的精神,碼出來(lái)的代碼本身是希望更多的人用到,應(yīng)用到生產(chǎn)中。 聲明:本渣渣部分代碼參考自TendCode其實(shí)有很多代碼是不需要自己一行行碼出來(lái),生產(chǎn)力是第一位。只有研究型人才需要生產(chǎn)代碼,作為一名渣渣拿來(lái)用是最高效的做法。程序員都...
閱讀 3101·2021-11-15 11:39
閱讀 1669·2021-08-19 10:56
閱讀 1218·2019-08-30 14:12
閱讀 3876·2019-08-29 17:29
閱讀 846·2019-08-29 16:21
閱讀 3542·2019-08-26 12:22
閱讀 1633·2019-08-23 16:30
閱讀 1178·2019-08-23 15:25