Django模型[ORM框架简介]

ORM框架

  • O是object,也就 类对象 的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是 映射 的意思。在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们 通过类和类对象就能操作它所对应的表格中的数据 。ORM框架还有一个功能,它可以 根据我们设计的类自动帮我们生成数据库中的表格 ,省去了我们自己建表的过程。
  • django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查操作。
    使用django进行数据库开发的步骤如下:
    1.在models.py中定义模型类
    2.迁移
    3.通过类和对象完成数据增删改查操作
  • 下面我们以保存图书信息为例来给大家介绍Django中进行数据库开发的整个流程。


进入虚拟环境h1_django。

workon h1_django

创建项目

django-admin startproject test2

创建应用

python manage.py startapp bookest

mysql添加数据库test2

creat database test2 charset=utf8;

修改配置文件
#INSTALLED_APPS项添加
'booktest',

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'test2', #数据库名字,
    'USER': 'root', #数据库登录用户名
    'PASSWORD': 'mysql', #数据库登录密码
    'HOST': 'localhost', #数据库所在主机
    'PORT': '3306', #数据库端口
  }
}

添加test2/init.py文件

import pymysql
pymysql.install_as_MySQLdb()

添加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')#英雄与图书表的关系为一对多,所以属性定义在英雄模型类中
生成迁移文件与执行

python manage.py makemigrations
python manage.py migrate

底层部分完成


插入数据

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);

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);

定义视图

添加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('/')

配置url

添加test2/urls.py

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'^$',views.index),
url(r'^delete(\d+)/$',views.delete),
url(r'^create/$',views.create),
]


配置文件添加模板

'DIRS': [os.path.join(BASE_DIR,'templates')],

创建templates/booktest/index.html文件

<html>
<head>
<meta ='utf8'>
<title>复习案例</title>
</head>
<body>
<a href="/create/">创建</a>
<ul>
{%for book in list%}
<li>{{book.btitle}}--<a href="/delete{{book.id}}/">删除</a></li>
{%endfor%}
</ul>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚...
    riverstation阅读 6,293评论 0 8
  • 切换到创建项目的目录 cd C:\Users\admin\Desktop\DjangoProject创建名为pr...
    在努力中阅读 8,618评论 2 3
  • 一、Django框架前言知识: 1、C/S和B/S的区别: C/S结构软件:客户端/服务端软件,即客户端要自己下载...
    月下独酌123阅读 10,313评论 0 36
  • (一)、启动服务器 (二)、创建数据库表 或 更改数据库表或字段 Django 1.7.1及以上 用以下命令 1....
    夏天夏星阅读 11,054评论 0 17
  • 此段内容简要来自自强学堂的教程详情请查询自强学堂 一、 后台的运作流程 接收request请求 处理数据 获取请求...
    coder_ben阅读 10,631评论 6 56

友情链接更多精彩内容