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