Django搭建個人博客之關於view的初步講解

前言

數據庫雖然已經有了,但是用戶通常只需要這個龐大數據庫中的很小一部分進行查看、修改等操作。爲此還需要代碼來恰當的取出並展示數據,這一部分代碼就被稱爲視圖。

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!")

網頁都是從視圖派生而來。每一個視圖表現爲一個簡單的Python函數,它必須要做的只有兩件事:返回一個包含被請求頁面內容的 HttpResponse對象,或者拋出一個異常,比如 Http404 。至於你還想幹些什麼,隨便你。

視圖函數中的request與網頁發來的請求有關,裏面包含getpost的內容、用戶瀏覽器、系統等信息。Django調用article_list函數時會返回一個含字符串的 HttpResponse對象。

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

前面的文章中已經將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_project\my_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_blog\urls.py分發的地址,article-list是剛纔配置的article\urls.py應用分發的地址。

運氣好的話,瀏覽器中會打印出Hello World!字符串:
在這裏插入圖片描述
不到10行代碼就完成了基本功能,是不是很神奇。

當然,只是小試牛刀。

準備工作

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

網站後臺概念

網站後臺,有時也稱爲網站管理後臺,是指用於管理網站的一系列操作,如:數據的增加、更新、刪除等。在項目開發的初期,因爲沒有真實的用戶數據和完整的測試環境,會頻繁地使用後臺修改測試數據。

Django內置了一個很好的後臺管理工具,只需要些少量代碼,就可以實現強大的功能。

創建管理員賬號(Superuser)

管理員賬號(Superuser)是可以進入網站後臺,對數據進行維護的賬號,具有很高的權限。這裏我們需要創建一個管理員賬號,以便添加後續的測試數據。

虛擬環境中輸入python manage.py createsuperuser指令,創建管理員賬號:

(env) E:\django_project\my_blog>python manage.py createsuperuser
Username: dusai
Email address: [email protected]
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項目生成的時候就自動配置好了後臺的settingsurl,因此不需要我們再操心了。

啓動server,在瀏覽器中輸入http://127.0.0.1:8000/admin/,一切正常的話就看到下面的登錄界面了:
在這裏插入圖片描述

輸入剛纔創建的管理員賬號,登錄進去:
在這裏插入圖片描述
紅框內就是剛纔添加的ArticlePost數據表,點擊進入後,再點擊右上角的ADD ARTICLE POST按鈕,到達如下頁面:
在這裏插入圖片描述
仔細看一下表單中的每一項,發現與ArticlePost中的字段完全符合;因爲updated字段指定了自動添加,這裏就沒顯示了。

將表單填好後,點擊保存:
在這裏插入圖片描述
可以看到ARTICLE POST中多了剛纔錄入的一條數據。按照同樣的方法,再寫入幾條數據:
在這裏插入圖片描述
至此準備工作就已經大功告成。

檢視數據庫

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

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

下載並安裝,用它打開db.sqlite3,軟件導航欄中就出現了數據庫中保存的各類數據列表。比如說auth_user就是用戶數據表了:
在這裏插入圖片描述
你可以用它檢查項目代碼中數據庫的操作是否正常,這在開發階段是非常實用的。

總結

本章初步感受了View的工作模式,創建了Superuser在後臺錄入了幾條測試數據。

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

創作不易,點個贊吧!!

版權聲明:如無特殊說明,文章均爲本站原創,轉載請註明出處
本文鏈接:https://blog.csdn.net/wsad861512140

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章