1. 程式人生 > >Django示例演示

Django示例演示

**

定義模型類

**
模型類被定義在"應用/models.py"檔案中,此例中為"booktest/models.py"檔案。
模型類必須繼承自Model類,位於包django.db.models中。
提示:對於重要資料使用邏輯刪除。

示例演示

接下來首先以"圖書-英雄"管理為例進行演示。
注意:這裡我們用的版本是django==1.83版本。
瞭解和2.1版本的區別,請百度查詢,這裡不再囉嗦。

1.開啟booktest/models.py檔案,定義模型類如下
from django.db import models

#定義圖書模型類BookInfo
class BookInfo(models.Model):
btitle = models.CharField(max_length=20)#圖書名稱
bpub_date = models.DateField()#釋出日期
bread = models.IntegerField(default=0)#閱讀量
bcomment = models.IntegerField(default=0)#評論量
isDelete = models.BooleanField(default=False)#邏輯刪除

#定義英雄模型類HeroInfo
class HeroInfo(models.Model):
hname = models.CharField(max_length=20)#英雄姓名
hgender = models.BooleanField(default=True)#英雄性別
isDelete = models.BooleanField(default=False)#邏輯刪除
hcomment = models.CharField(max_length=200)#英雄描述資訊
hbook = models.ForeignKey(‘BookInfo’)#英雄與圖書表的關係為一對多,所以屬性定義在英雄模型類中

2.遷移
生成遷移檔案。

python manage.py makemigrations
生成遷移檔案的時候出現錯誤,把資料庫切換成了mysql,需要安裝pymysql模組之後,Django框架才可以操作mysql資料庫。安裝命令如下:

pip install pymysql
安裝成功之後,在test2/init.py檔案中加上如下程式碼:

import pymysql
pymysql.install_as_MySQLdb()
在這裡插入圖片描述
建立資料庫

然後執行如下命令。

python manage.py makemigrations
python manage.py migrate
遷移
在這裡插入圖片描述


開啟資料庫的命令列,檢視當前所有表如下圖:
在這裡插入圖片描述

遷移

表bookinfo結構如:
在這裡插入圖片描述
預設值並不在資料庫層面生效,而是在django建立物件時生效。

圖書表結構

表booktest_heroinfo結構如下:
在這裡插入圖片描述
Django框架會根據關係屬性生成一個關係欄位,並建立外來鍵約束。

英雄表結構

3.測試資料
在資料庫命令列中,複製如下語句執行,向booktest_bookinfo表中插入測試資料:

insert into booktest_bookinfo(btitle,bpub_date,bread,bcomment,isDelete) values
(‘射鵰英雄傳’,‘1980-5-1’,12,34,0),
(‘天龍八部’,‘1986-7-24’,36,40,0),
(‘笑傲江湖’,‘1995-12-24’,20,80,0),
(‘雪山飛狐’,‘1987-11-11’,58,24,0);
再複製如下語句執行,向booktest_heroinfo表中插入測試資料:

insert into booktest_heroinfo(hname,hgender,hbook_id,hcomment,isDelete) values
(‘郭靖’,1,1,‘降龍十八掌’,0),
(‘黃蓉’,0,1,‘打狗棍法’,0),
(‘黃藥師’,1,1,‘彈指神通’,0),
(‘歐陽鋒’,1,1,‘蛤蟆功’,0),
(‘梅超風’,0,1,‘九陰白骨爪’,0),
(‘喬峰’,1,2,‘降龍十八掌’,0),
(‘段譽’,1,2,‘六脈神劍’,0),
(‘虛竹’,1,2,‘天山六陽掌’,0),
(‘王語嫣’,0,2,‘神仙姐姐’,0),
(‘令狐沖’,1,3,‘獨孤九劍’,0),
(‘任盈盈’,0,3,‘彈琴’,0),
(‘嶽不群’,1,3,‘華山劍法’,0),
(‘東方不敗’,0,3,‘葵花寶典’,0),
(‘胡斐’,1,4,‘胡家刀法’,0),
(‘苗若蘭’,0,4,‘黃衣’,0),
(‘程靈素’,0,4,‘醫術’,0),
(‘袁紫衣’,0,4,‘六合拳’,0);
4.定義檢視
開啟booktest/views.py檔案,定義檢視程式碼如下:

from django.shortcuts import render,redirect
from booktest.models import *
from datetime import date

#查詢所有圖書並顯示
def index(request):
list=BookInfo.objects.all()
return render(request,‘booktest/index.html’,{‘list’:list})

#建立新圖書
def create(request):
book=BookInfo()
book.btitle = ‘流星蝴蝶劍’
book.bpub_date = date(1995,12,30)
book.save()
#轉向到首頁
return redirect(’/’)

#邏輯刪除指定編號的圖書
def delete(request,id):
book=BookInfo.objects.get(id=int(id))
book.delete()
#轉向到首頁
return redirect(’/’)
5.配置url
開啟test2/urls.py檔案,配置url如下:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
url(r’^admin/’, include(admin.site.urls)),
#引入booktest的url配置
url(r’^’,include(‘booktest.urls’)),
]
在booktest應用下建立urls.py檔案,程式碼如下:

from django.conf.urls import url
from booktest import views

urlpatterns=[
url(r’^KaTeX parse error: Expected 'EOF', got '\d' at position 35: … url(r'^delete(\̲d̲+)/’,views.delete),
url(r’^create/$’,views.create),
]
6.建立模板
開啟test2/settings.py檔案,配置模板查詢目錄TEMPLATES的DIRS。

‘DIRS’: [os.path.join(BASE_DIR,‘templates’)],
在這裡插入圖片描述
模板目錄

建立templates/booktest/index.html檔案。

模板檔案
在這裡插入圖片描述
模板程式碼如下:

複習案例 建立
    {%for book in list%}
  • {{book.btitle}}--刪除
  • {%endfor%}
7.執行 執行伺服器。

python manage.py runserver
在瀏覽器中檢視。
在這裡插入圖片描述
首頁

操作效果如下圖。
在這裡插入圖片描述
執行

在mysql命令列中檢視資料表變化如下圖:

資料變化
在這裡插入圖片描述