@TOC
前言
Django中不溜教程(1)快速入門1對(duì)Django進(jìn)行了介紹捞稿,并搭建起環(huán)境捏顺,完成了最簡(jiǎn)單的一個(gè)視圖訪問指定字符串的操作。
Django中不溜教程(2)快速入門2對(duì)Django中的ORM形式的數(shù)據(jù)庫操作進(jìn)行了初步學(xué)習(xí)国裳,并在命令行中進(jìn)行了新增數(shù)據(jù)演示鬓照。
前兩個(gè)章節(jié)的知識(shí)我們是獨(dú)立學(xué)習(xí)的,接下里這一章節(jié)我們就將前兩個(gè)章節(jié)的基礎(chǔ)上實(shí)現(xiàn)秽之,請(qǐng)求訪問視圖当娱,在視圖上訪問數(shù)據(jù)庫,并且將數(shù)據(jù)庫的數(shù)據(jù)返回給客戶端的瀏覽器上進(jìn)行顯示考榨。如果有遺忘可點(diǎn)擊上面鏈接進(jìn)行復(fù)習(xí)跨细。
在視圖中操作模型
其實(shí)操作很簡(jiǎn)單:
打開視圖文件 views.py文件,引入模型類董虱,然后在處理請(qǐng)求的函數(shù)體中調(diào)用模型的查詢API扼鞋,最后將查詢的結(jié)果指定在response中進(jìn)行返回即可。
#views.py
from django.http import HttpResponse
from django.shortcuts import render
from .models import news
# Create your views here.
def index(request):
# 模型.objects返回的是一個(gè)Manager對(duì)象
# Manager包含很多對(duì)模型操作的函數(shù)愤诱,主要是查詢云头,其中all()表示獲取所有的數(shù)據(jù)
# all()返回的是一個(gè)QuerySet類型的集合
newsList = news.objects.all()
return HttpResponse(newsList)
接著等待服務(wù)器重啟之后再次訪問路徑查看效果。發(fā)現(xiàn)我們已經(jīng)可以在訪問的頁面中顯示數(shù)據(jù)庫中的真實(shí)數(shù)據(jù)淫半,當(dāng)然當(dāng)前數(shù)據(jù)顯得形態(tài)丑陋簡(jiǎn)單溃槐,這里可以配置html,css進(jìn)行美化,我們?cè)诋?dāng)前入門demo里不深究科吭,這里還需要使用到模板技術(shù)我們還未接觸昏滴。
admin站點(diǎn)
介紹 admin站點(diǎn)
Django 會(huì)全自動(dòng)地根據(jù)模型創(chuàng)建后臺(tái)界面。包含了管理員賬號(hào)对人,模型對(duì)應(yīng)表的增刪改查谣殊,操作記錄等功能,解放了開發(fā)者需要為一套系統(tǒng)專門開發(fā)一套完整的cms系統(tǒng)牺弄。
比如一個(gè)新聞網(wǎng)站的場(chǎng)景:
Django 產(chǎn)生于一個(gè)公眾頁面和內(nèi)容發(fā)布者頁面完全分離的新聞?lì)愓军c(diǎn)的開發(fā)過程中姻几。站點(diǎn)管理人員使用管理系統(tǒng)來添加新聞、事件和體育時(shí)訊等,這些添加的內(nèi)容被顯示在公眾頁面上蛇捌。Django 通過為站點(diǎn)管理人員創(chuàng)建統(tǒng)一的內(nèi)容編輯界面解決了這個(gè)問題抚恒。
管理界面不是為了網(wǎng)站的訪問者,而是為管理者準(zhǔn)備的络拌。
創(chuàng)建一個(gè)管理員賬號(hào)
運(yùn)行以下命令來創(chuàng)建登陸管理頁面的用戶俭驮。
python manage.py createsuperuser
接下來根據(jù)提示輸入用戶名,郵箱春贸,密碼混萝,密碼重復(fù)即可。
訪問admin站點(diǎn)
Django admin站點(diǎn)默認(rèn)就是啟用的祥诽,啟動(dòng)服務(wù)器輸入路徑:
http://127.0.0.1:8000/admin/ 進(jìn)行訪問譬圣。
登陸后看到如下頁面:
admin站點(diǎn)常用基本配置
加入自定義模型的管理
我們發(fā)現(xiàn)其中默認(rèn)只有Groups和Uers的相關(guān)管理功能,這兩個(gè)主要是負(fù)責(zé)admin站點(diǎn)權(quán)限和管理員管理的雄坪,我們還想要對(duì)我們自己創(chuàng)建的模型對(duì)象進(jìn)行管理。
我們需要對(duì)模型進(jìn)行注冊(cè)動(dòng)作屯蹦。
打開應(yīng)用目錄下的admin.py文件维哈,我們?cè)谶@里通過代碼將模型加入admin站點(diǎn)管理中。
from django.contrib import admin
from myapp.models import news
# Register your models here.
#將模型注冊(cè)到admin站點(diǎn)登澜,以后新增模型如果想要在admin站點(diǎn)中管理也需要注冊(cè)
admin.site.register(news)
帶服務(wù)器重啟之后刷新admin站點(diǎn)阔挠,遍可以查看到news模型的管理,自行進(jìn)行操作體會(huì)一下admin站點(diǎn)功能的便捷之處脑蠕。
修改語言和時(shí)區(qū)
當(dāng)前admin站點(diǎn)內(nèi)的文字都會(huì)英文购撼,我們可以通過配置修改語言。
這兩處修改都在項(xiàng)目目錄下的setting.py文件中谴仙,修改LANGUAGE_CODE 和TIME_ZONE
#指定語言為簡(jiǎn)體中文
LANGUAGE_CODE = 'zh-hans'
#指定時(shí)區(qū)為亞洲上海
TIME_ZONE = 'Asia/Shanghai'
總結(jié)
這里我們將manage.py相關(guān)命令和各個(gè)文件功能回顧總結(jié)一下:
manage.py命令
#在項(xiàng)目?jī)?nèi)創(chuàng)建新應(yīng)用
python manage.py startapp myapp
#啟動(dòng)服務(wù)器
python manage.py runserver
#為模型的改變生成遷移文件
python manage.py makemigrations myapp
#應(yīng)用遷移文件
python manage.py migrate
#在django項(xiàng)目?jī)?nèi)進(jìn)入帶有django環(huán)境的終端
python manage.py shell
文件功能
項(xiàng)目目錄文件
__init__.py:表示當(dāng)前文件夾是一個(gè)包迂求,無其他含義。
settings.py:項(xiàng)目的配置文件晃跺,主要有DATABASES數(shù)據(jù)庫配置揩局,INSTALLED_APPS插拔應(yīng)用,LANGUAGE_CODE語言掀虎,TIME_ZONE時(shí)區(qū)凌盯。
urls.py:項(xiàng)目的url路徑映射配置,這里只包含完整路徑中應(yīng)用名稱部分烹玉,并引入各個(gè)應(yīng)用的urls.py
wsgi.py:作為你的項(xiàng)目的運(yùn)行在 WSGI 兼容的Web服務(wù)器上的入口驰怎,目前用不到。
應(yīng)用目錄文件
migrations文件夾:Django自動(dòng)生成的數(shù)據(jù)庫遷移文件二打,它會(huì)根據(jù)這些文件創(chuàng)建修改表县忌,一般不需要我們進(jìn)行操作。
__init__.py:表示當(dāng)前文件夾是一個(gè)包,無其他含義芹枷。
admin.py:在這里進(jìn)行模型注冊(cè)到admin站點(diǎn)管理中衅疙。
apps.py:應(yīng)用程序的元數(shù)據(jù),對(duì)當(dāng)前應(yīng)用的描述配置鸳慈。
models.py:定義模型饱溢,Django會(huì)根據(jù)模型創(chuàng)建表和生成操作表的api
tests.py:?jiǎn)卧獪y(cè)試類
urls.py:配置當(dāng)前應(yīng)用下的視圖與路徑的映射
views.py:配置當(dāng)前應(yīng)用的視圖,試圖用于接受請(qǐng)求走芋,執(zhí)行業(yè)務(wù)邏輯绩郎,產(chǎn)生響應(yīng)
我們通過三章教程演示了最基本的django操作,體會(huì)了他的視圖翁逞,模型與admin站點(diǎn)的功能肋杖,當(dāng)然這些還遠(yuǎn)遠(yuǎn)不夠,接下來我們會(huì)對(duì)常用模塊進(jìn)行深入講解挖函。