最近全國各地全是高溫狀態(tài),中午睡個覺都是被熱醒的,整天暈乎乎的,之前被Django弄得一臉懵逼,各個py文件之間緊密聯(lián)系。現(xiàn)在,趁著清醒,來說說。
上次已經(jīng)講過怎樣創(chuàng)建項(xiàng)目和應(yīng)用。現(xiàn)在,借著之前已經(jīng)創(chuàng)建好的應(yīng)用內(nèi)容跟大家介紹下。應(yīng)用名:myblog
(一)創(chuàng)建第一個簡單頁面(響應(yīng))
-
這會兒我們不需要操作什么,只需編輯blog.views,改改(總目錄)myblog/urls.py
- 小知識:
a、每個響應(yīng)對應(yīng)一個函數(shù)(),對應(yīng)一個URL,并且函數(shù)必須返回一個響應(yīng)
b、函數(shù)必須存在一個參數(shù),一般約定為request
效果:
- 配置URL
編輯urls.py
- 小知識:
a、每個URL都以url的形式寫出來
b、url函數(shù)放在urlpatterns列表中
c、url函數(shù)有三個參數(shù):URL(正則),對應(yīng)的方法,名稱
代碼:
from django.conf.urls import url
from django.contrib import admin
import blog.views as bv
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', bv.index)
]
- 第二種URL配置(包含其他url)
修改根目錄;在應(yīng)用目錄新建一個urls.py (可以直接復(fù)制根的urls.py到應(yīng)用下,把多余的內(nèi)容刪掉)并且修改內(nèi)容
- 小知識:
a、在根urls.py中引入include
b、在APP(應(yīng)用)目錄下創(chuàng)建urls.py 文件,格式與根的urls.py相同,刪掉多余的
c、在根urls.py中url函數(shù)的第二個參數(shù)改為include('blog.urls')
代碼:
a、根 urls.py
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')),
]
b、應(yīng)用 urls.py
from django.conf.urls import url
from .import views
urlpatterns = [
url(r'^index/', views.index),
]
效果:
注意事項(xiàng):
根urls.py 針對APP配置的URL名稱是該APP所有的url的總路徑,配置url時注意正則表達(dá)式結(jié)尾符號$和/
小結(jié):兩種URL配置方法都可以達(dá)到相同的效果,但是建議采用第二種,易于維護(hù)、管理,同時避免總項(xiàng)目的urlpatterns龐大
(二)Templates介紹
- 什么是templates?
一個一個使用了Django模板語言(Django Template Language,DTL)的HTML文件。當(dāng)然,也可以使用第三方模板(jinja2) - 開發(fā)第一個Template
步驟:
a、在APP(應(yīng)用)的根目錄下創(chuàng)建名叫template的目錄(directory)
b、在該目錄下,可以添加我們想要的HTML文件
c、在views.py中返回render()。render函數(shù),將HTML界面響應(yīng)給瀏覽器,render()函數(shù)傳遞一般三個參數(shù)(請求對象,HTML文件,后臺往前端輸送的數(shù)據(jù))
views.py
from django.shortcuts import render
def index(request):
return render(request, 'index.html')
-
render()函數(shù)傳遞的第三個參數(shù)
render()函數(shù)中支持一個dict字典(鍵值對)類型的參數(shù);
該字典是后臺傳遞到模板的參數(shù),鍵為參數(shù)名,在模板中使用{{參數(shù)名}}來直接使用
譬如:
- 小知識:
a、當(dāng)一個項(xiàng)目中添加有多個應(yīng)用時,Django按照INSTALLED_APPS中的添加順序查找Templates,不同的應(yīng)用下Templates的html文件名字相同造成沖突
b、解決辦法:在APP的Templates目錄下創(chuàng)建以APP名為名稱的目錄,將html文件放入新創(chuàng)建的目錄下
(三)Models介紹
1.Models是什么?
通常,一個Model對應(yīng)數(shù)據(jù)庫的一張數(shù)據(jù)表。Django中Models以類的形式表現(xiàn),它包含了一些基本字段以及數(shù)據(jù)的一些行為。采用ORM(對象關(guān)系映射)實(shí)現(xiàn)了對象與數(shù)據(jù)庫之間的映射,隱藏了數(shù)據(jù)訪問的細(xì)節(jié),不需要編寫任何SQL語句,對類的操作相當(dāng)于是對數(shù)據(jù)庫的操作。
2.編寫Models步驟
a、創(chuàng)建類,繼承models.Model,該類即是一張數(shù)據(jù)表
b、在類中創(chuàng)建字段(類里面的屬性)
models.py
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=32)
content = models.TextField(null=True)
3.生成數(shù)據(jù)表
現(xiàn)在類已經(jīng)寫好了,就要把類與數(shù)據(jù)庫對應(yīng)起來。注意,每次修改了models.py文件里面的內(nèi)容,一定操作一下步驟,才會修改有效不會報錯
a、命令行中manage.py 同級目錄,執(zhí)行python manage.py makemigrations blog
(對應(yīng)app的名稱)
若不寫app的名稱,則默認(rèn)該項(xiàng)目下所有應(yīng)用都生成數(shù)據(jù)遷移
b、再執(zhí)行python manage.py migrate
c、數(shù)據(jù)表(遷移文件)的查看
Django會自動在app/migrations/目錄下生成移植文件;執(zhí)行python manage.py sqlmigrate 應(yīng)用名 文件的id
查看SQL語句
(四)Admin簡介
什么是Admin?
Admin是Django自帶的一個功能強(qiáng)大的自動化數(shù)據(jù)管理界面,被授權(quán)的用戶可直接在Admin中管理數(shù)據(jù)庫,Django提供了許多針對Admin的定制功能。
1.配置Admin
創(chuàng)建超級用戶:
pyhton manage.py createsuperuser
進(jìn)行用戶名、郵箱地址、密碼的設(shè)置
登錄網(wǎng)址:http://127.0.0.1:8000/admin/ 查看admin管理網(wǎng)站
改變頁面成為中文界面:修改settings.py中的LANGUAGE_CODE = 'en-us'
為LANGUAGE_CODE = 'zh_Hans'
- 配置應(yīng)用
在應(yīng)用下admin.py 文件中引入自身的models模塊(或里面的模型類)
編輯admin.py: admin.site.register(Article)
admin.py:
from django.contrib import admin
from blog.models import Article
admin.site.register(Article)
配置應(yīng)用后的界面:
配置應(yīng)用前:
Tips:下次介紹完善頁面基本內(nèi)容操作