數(shù)據(jù)庫雖然已經(jīng)有了,但是用戶通常只需要這個龐大數(shù)據(jù)庫中的很小一部分進行查看、修改等操作。為此還需要代碼來恰當?shù)娜〕霾⒄故緮?shù)據(jù),這一部分代碼就被稱為視圖。
Django 中視圖的概念是**「一類具有相同功能和模板的網(wǎng)頁的集合」**。
Hello World!
首先寫一個最簡單的視圖函數(shù),在瀏覽器中打印出Hello World!
字符串。
打開book/views.py
,寫出視圖函數(shù):
# book/views.py
from django.shortcuts import render
from django.http import HttpResponse
# 視圖函數(shù)
def book_list(request):
return HttpResponse("圖書管理員你好!")
**網(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)用book_list
函數(shù)時會返回一個含字符串的 HttpResponse
對象。
有了視圖函數(shù),還需要配置URLconfs,將用戶請求的URL鏈接關(guān)聯(lián)起來。換句話說,URLconfs的作用是將URL映射到視圖中。
前面的文章中已經(jīng)將URL分發(fā)給了book
應用,因此這里只需要修改之前添加的book/urls.py
就可以。添加以下代碼:
# book/urls.py
from django.urls import path
from . import views
# 正在部署的應用的名稱
app_name = 'book'
# 存放映射關(guān)系的列表
urlpatterns = [
# path函數(shù)將url映射到視圖
path('', views.book_list, name='book_list'),
]
**Django 將會根據(jù)用戶請求的 URL 來選擇使用哪個視圖。**本例中當用戶請求book
鏈接時,會調(diào)用views.py
中的book_list
函數(shù),并返回渲染后的對象。參數(shù)name
用于反查url
地址,相當于給url
起了個名字,以后會用到。
測試一下剛才敲的代碼是否工作正常。
終端中輸入python manage.py runserver
,運行調(diào)試服務器:
(venv) PS E:\djangopj\library> python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
July 06, 2023 - 13:33:02
Django version 4.2.3, using settings 'library.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
成功運行后,打開瀏覽器,輸入url
地址http://127.0.0.1:8000/book
,其中127.0.0.1:8000
是調(diào)試服務器的本地地址,book
是項目路由library\urls.py
分發(fā)的地址
運氣好的話,瀏覽器中會打印出圖書管理員你好!
字符串:
準備工作
在章節(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ù)。
終端里輸入python manage.py createsuperuser
指令,創(chuàng)建管理員賬號:
(env) E:\django_project\my_blog>python manage.py createsuperuser
Username: dusai
Email address: dusaiphoto@foxmail.com
Password:
Password (again):
Superuser created successfully.
指令會提示你輸入賬號名字、郵箱和密碼,根據(jù)喜好填入即可。
將bookPost注冊到后臺中
接下來我們需要“告訴”Django,后臺中需要添加bookPost
這個數(shù)據(jù)表供管理。
打開book/admin.py
,寫入以下代碼:
book/admin.py
from django.contrib import admin
# 別忘了導入bookrPost
from .models import bookPost
# 注冊bookPost到admin中
admin.site.register(bookPost)
這樣就簡單的注冊好了。
在后臺中遨游
細心的同學可能已經(jīng)發(fā)現(xiàn),Django項目生成的時候就自動配置好了后臺的settings和url,因此不需要我們再操心了。
啟動server,在瀏覽器中輸入http://127.0.0.1:8000/admin/
,一切正常的話就看到下面的登錄界面了:
輸入剛才創(chuàng)建的管理員賬號,登錄進去:
紅框內(nèi)就是剛才添加的bookPost
數(shù)據(jù)表,點擊進入后,再點擊右上角的ADD book
按鈕,到達如下頁面:
仔細看一下表單中的每一項,發(fā)現(xiàn)與book
中的字段完全符合;因為updated
字段指定了自動添加,這里就沒顯示了。
將表單填好后,點擊保存:
可以看到book中多了剛才錄入的一條數(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ù)庫可是軟件:Navicat Premium 一套可創(chuàng)建多個連接的數(shù)據(jù)庫開發(fā)工具,讓你從單一應用程序中同時連接 MySQL、Redis、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 。它與 OceanBase 數(shù)據(jù)庫及 Amazon RDS、Amazon Aurora、Amazon Redshift、Amazon ElastiCache、Microsoft Azure、Oracle Cloud、MongoDB Atlas、Redis Enterprise Cloud、阿里云、騰訊云和華為云等云數(shù)據(jù)庫兼容。你可以快速輕松地創(chuàng)建、管理和維護數(shù)據(jù)庫。
下載并安裝,用它鏈接MySQL,查看項目數(shù)據(jù)庫表。比如說auth_user就是用戶數(shù)據(jù)表了:
你可以用它檢查項目代碼中數(shù)據(jù)庫的操作是否正常,這在開發(fā)階段是非常實用的。
總結(jié)
本章初步感受了View的工作模式,創(chuàng)建了Superuser在后臺錄入了幾條測試數(shù)據(jù)。文章來源:http://www.zghlxwxcb.cn/news/detail-552907.html
下一章將編寫更有意義的View,準備好后老司機就開車了。文章來源地址http://www.zghlxwxcb.cn/news/detail-552907.html
到了這里,關(guān)于Django搭建圖書管理系統(tǒng)04:View視圖初探的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!