亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Django搭建個人博客:View視圖初探

Turbo / 2560人閱讀

摘要:比如,在一個博客應(yīng)用中,你可能會創(chuàng)建如下幾個視圖博客首頁展示最近的幾項內(nèi)容。這些需求都靠視圖來完成。首先寫一個最簡單的視圖函數(shù),在瀏覽器中打印出字符串。調(diào)用函數(shù)時會返回一個含字符串的對象。換句話說,的作用是將映射到視圖中。

Django 中的視圖的概念是「一類具有相同功能和模板的網(wǎng)頁的集合」。比如,在一個博客應(yīng)用中,你可能會創(chuàng)建如下幾個視圖:

博客首頁:展示最近的幾項內(nèi)容。

內(nèi)容“詳情”頁:詳細展示某項內(nèi)容。

評論處理器:用于響應(yīng)為一項內(nèi)容添加評論的操作。

這些需求都靠視圖(View)來完成。

Hello World!

首先寫一個最簡單的視圖函數(shù),在瀏覽器中打印出Hello World!字符串。

打開article/views.py,寫出視圖函數(shù):

article/views.py

# 導入 HttpResponse 模塊
from django.http import HttpResponse

# 視圖函數(shù)
def article_list(request):
    return HttpResponse("Hello World!")

在 Django 中,網(wǎng)頁都是從視圖派生而來。每一個視圖表現(xiàn)為一個簡單的 Python 函數(shù),它必須要做的只有兩件事:返回一個包含被請求頁面內(nèi)容的 HttpResponse對象,或者拋出一個異常,比如 Http404 。至于你還想干些什么,隨便你。

視圖函數(shù)中的request與網(wǎng)頁發(fā)來的請求有關(guān),里面包含get或post的內(nèi)容、用戶瀏覽器、系統(tǒng)等信息。Django調(diào)用article_list函數(shù)時會返回一個含字符串的 HttpResponse對象。

有了視圖函數(shù),還需要配置URLconfs,將用戶請求的URL鏈接關(guān)聯(lián)起來。換句話說,URLconfs的作用是將URL映射到視圖中。

在前面的文章中已經(jī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 將會根據(jù)用戶請求的 URL 來選擇使用哪個視圖。本例中當用戶請求article/article-list鏈接時,會調(diào)用views.py中的article_list函數(shù),并返回渲染后的對象。參數(shù)name用于反查url地址,相當于給url起了個名字,以后會用到。

測試一下剛才敲的代碼是否工作正常。

在虛擬環(huán)境中,進入項目目錄,也就是my_blog文件夾,輸入python manage.py runserver,運行調(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.

成功運行后,打開瀏覽器,輸入url地址http://127.0.0.1:8000/article/article-list/,其中127.0.0.1:8000是調(diào)試服務(wù)器的本地地址,article是項目路由my_blogurls.py分發(fā)的地址,article-list是剛才配置的articleurls.py應(yīng)用分發(fā)的地址。

運氣好的話,瀏覽器中會打印出Hello World!字符串:

不到10行代碼就完成了基本功能,是不是很神奇。

當然,只是小試牛刀。

準備工作

在前面章節(jié)編寫Model模型中雖然定義了數(shù)據(jù)庫表,但是這個表是空的,不方便展示View調(diào)取數(shù)據(jù)的效果。所以在寫View之前,需要往數(shù)據(jù)表里記錄一些數(shù)據(jù)。接下來就做這個工作。

網(wǎng)站后臺概念

網(wǎng)站后臺,有時也稱為網(wǎng)站管理后臺,是指用于管理網(wǎng)站的一系列操作,如:數(shù)據(jù)的增加、更新、刪除等。在項目開發(fā)的初期,因為沒有真實的用戶數(shù)據(jù)和完整的測試環(huán)境,會頻繁地使用后臺修改測試數(shù)據(jù)。

幸運的是Django內(nèi)置了一個很好的后臺管理工具,只需要些少量代碼,就可以實現(xiàn)強大的功能。

創(chuàng)建管理員賬號(Superuser)

管理員賬號(Superuser)是可以進入網(wǎng)站后臺,對數(shù)據(jù)進行維護的賬號,具有很高的權(quán)限。這里我們需要創(chuàng)建一個管理員賬號,以便添加后續(xù)的測試數(shù)據(jù)。

虛擬環(huán)境中輸入python manage.py createsuperuser指令,創(chuàng)建管理員賬號:

(env) E:django_projectmy_blog>python manage.py createsuperuser
Username: dusai
Email address: dusaiphoto@foxmail.com
Password:
Password (again):
Superuser created successfully.

指令會提示你輸入賬號名字、郵箱和密碼,根據(jù)喜好填入即可創(chuàng)建成功。

將ArticlePost注冊到后臺中

接下來我們需要“告訴”Django,后臺中需要添加ArticlePost這個數(shù)據(jù)表供管理。

打開article/admin.py,寫入以下代碼:

article/admin.py

from django.contrib import admin

# 別忘了導入ArticlerPost
from .models import ArticlePost

# 注冊ArticlePost到admin中
admin.site.register(ArticlePost)

這樣就簡單的注冊好了。

在后臺中遨游

細心的同學可能已經(jīng)發(fā)現(xiàn),Django項目生成的時候就自動配置好了后臺的settings和url,因此不需要我們再操心了。

啟動server,在瀏覽器中輸入http://127.0.0.1:8000/admin/,一切正常的話就看到下面的登錄界面了:

輸入剛才創(chuàng)建的管理員賬號,登錄進去:

紅框內(nèi)就是剛才添加的ArticlePost數(shù)據(jù)表,點擊進入后,再點擊右上角的ADD ARTICLE POST按鈕,到達如下頁面:

仔細看一下表單中的每一項,發(fā)現(xiàn)與ArticlePost中的字段完全符合;因為updated字段指定了自動添加,這里就沒顯示了。

將表單填好后,點擊保存:

可以看到ARTICLE POST中多了剛才錄入的一條數(shù)據(jù)。按照同樣的方法,再寫入幾條數(shù)據(jù):

至此準備工作就已經(jīng)大功告成。

檢視數(shù)據(jù)庫
2018-10-29 新增內(nèi)容

通過上面的操作,我們的數(shù)據(jù)庫中已經(jīng)有1條用戶數(shù)據(jù)、3條文章數(shù)據(jù)了。有的時候我需要檢查數(shù)據(jù)庫中的數(shù)據(jù)是否正確,但是項目中的數(shù)據(jù)庫文件db.sqlite3又無法直接打開,怎么辦呢?

這時候就需要用到專門處理SQLite數(shù)據(jù)文件的軟件了:SQLiteStudio

下載并安裝,用它打開db.sqlite3,軟件導航欄中就出現(xiàn)了數(shù)據(jù)庫中保存的各類數(shù)據(jù)列表。比如說auth_user就是用戶數(shù)據(jù)表了:

你可以用它檢查項目代碼中數(shù)據(jù)庫的操作是否正常,這在開發(fā)階段是非常實用的。

總結(jié)

本章初步感受了View的工作模式,創(chuàng)建了Superuser在后臺錄入了幾條測試數(shù)據(jù)。

下一章將編寫更有意義的View,準備好后老司機就開車了。

有疑問請在杜賽的個人網(wǎng)站留言,我會盡快回復。

或Email私信我:dusaiphoto@foxmail.com

項目完整代碼:Django_blog_tutorial

轉(zhuǎn)載請告知作者并注明出處。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/42461.html

相關(guān)文章

  • Django搭建個人博客:改寫View視圖

    摘要:改寫視圖函數(shù)上一章我們感受了視圖的工作流程。循壞表示依次取出中的元素,命名為,并分別執(zhí)行接下來操作。即為語言,中間包裹了一個段落的文字。有疑問請在杜賽的個人網(wǎng)站留言,我會盡快回復。 改寫視圖函數(shù) 上一章我們感受了視圖的工作流程。 為了讓視圖真正發(fā)揮作用,改寫article/views.py中的article_list視圖函數(shù): article/views.py from django...

    KaltZK 評論0 收藏0
  • Django搭建個人博客:基于類的視圖

    摘要:有編程基礎(chǔ)的同學都知道,類是面向?qū)ο蠹夹g(shù)中非常重要的概念。有區(qū)別的是,是作為功能添加到子類中的,而不是作為父類。首先調(diào)用父類方法,將這個對象賦值給變量,然后再對其進行統(tǒng)計瀏覽量的操作,最后將對象返回。 說是完結(jié),馬上又開始寫進階篇了。 本章不會為博客項目增加新功能,但是也同樣重要,因為我們要學習高逼格的基于類的視圖。 什么是類視圖 前面章節(jié)中寫的所有視圖都是基于函數(shù)的,即def;而類視...

    QiShare 評論0 收藏0
  • Django搭建個人博客:用django-notifications實現(xiàn)消息通知

    摘要:接下來你就可以在項目的任何地方發(fā)送通知了像這樣其中的參數(shù)釋義發(fā)送通知的對象接收通知的對象動詞短語鏈接到動作的對象可選執(zhí)行通知的對象可選有點繞,舉個栗子杜賽在搭建個人博客中對你發(fā)表了評論。有疑問請在杜賽的個人網(wǎng)站留言,我會盡快回復。 憑借你勤奮的寫作,拜讀你文章的用戶越來越多,他們的評論也分散在眾多的文章之中。作為博主,讀者的留言肯定是要都看的;而讀者給你留言,自然也希望得到回復。 怎么...

    Zoom 評論0 收藏0
  • Django搭建個人博客:編寫博客文章的Model模型

    摘要:在里寫一個數(shù)據(jù)庫驅(qū)動的應(yīng)用的第一步是定義模型,也就是數(shù)據(jù)庫結(jié)構(gòu)設(shè)計和附加的其它元數(shù)據(jù)。模型元數(shù)據(jù)是任何不是字段的東西,例如排序選項數(shù)據(jù)庫表名單數(shù)和復數(shù)名稱和。 Django 框架主要關(guān)注的是模型(Model)、模板(Template)和視圖(Views),稱為MTV模式。 它們各自的職責如下: 層次 職責 模型(Model),即數(shù)據(jù)存取層 處理與數(shù)據(jù)相關(guān)的所有事務(wù): 如何存取...

    winterdawn 評論0 收藏0
  • 個人博客三|首頁后臺開發(fā)

    摘要:聲明本渣渣部分代碼參考自其實有很多代碼是不需要自己一行行碼出來,生產(chǎn)力是第一位。只有研究型人才需要生產(chǎn)代碼,作為一名渣渣拿來用是最高效的做法。程序員都有一個開源的精神,碼出來的代碼本身是希望更多的人用到,應(yīng)用到生產(chǎn)中。 聲明:本渣渣部分代碼參考自TendCode其實有很多代碼是不需要自己一行行碼出來,生產(chǎn)力是第一位。只有研究型人才需要生產(chǎn)代碼,作為一名渣渣拿來用是最高效的做法。程序員都...

    zorpan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<