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