引用自:https://blog.csdn.net/weixin_42950386/article/details/83143293
定义模型类
模型类被定义在"应用/models.py"文件中,此例中为"booktest/models.py"文件。
模型类必须继承自Model类,位于包django.db.models中。
提示:对于重要数据使用逻辑删除。
示例演示
接下来首先以"图书-英雄"管理为例进行演示。
注意:这里我们用的版本是django==1.8.2版本。
了解和2.1版本的区别,请百度查询,这里不再啰嗦。
1.打开booktest/models.py文件,定义模型类如下
1 from django.db import models 2 # from datetime import date 3 # Create your models here. 4 5 class BookInfo(models.Model): 6 """图书模型类""" 7 # 书名 8 btitle = models.CharField(max_length=40) 9 # 出版日期 10 bpub_date = models.DateField(default=‘1970-01-01‘) 11 # 阅读量 12 bread = models.IntegerField(default=0) 13 # 点赞量 14 bgood = models.IntegerField(default=0) 15 # 删除 16 is_del = models.BooleanField(default=False) 17 18 class HeroInfo(models.Model): 19 """英雄模型类""" 20 # 英雄名称 21 hname = models.CharField(max_length=20) 22 # 性别 23 hgender = models.BooleanField(default=False) # False为男 24 # 年龄 25 hage = models.IntegerField(default=18) 26 # 功夫 27 hcomment = models.CharField(max_length=128) 28 # 关联 29 hbook = models.ForeignKey("BookInfo") 30 # 删除 31 isDelete = models.BooleanField(default=False)
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命令行中查看数据表变化如下图:
数据变化
原文地址:https://www.cnblogs.com/yifengs/p/11517076.html