定义模型类

  • 模型类被定义在"应用/models.py"文件中,此例中为"booktest/models.py"文件。
  • 模型类必须继承自Model类,位于包django.db.models中。
  • 提示:对于重要数据使用逻辑删除。

示例演示

接下来首先以"图书-英雄"管理为例进行演示,复习一下昨天的内容。

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 adminurlpatterns = [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 viewsurlpatterns=[url(r'^$',views.index),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文件。

模板代码如下:

<html>
<head><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>

7.运行

运行服务器。

python manage.py runserver

在浏览器中查看。

操作效果如下图。

在mysql命令行中查看数据表变化如下图:

Django框架学习---入门-内容复习(2.1)相关推荐

  1. Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)

    Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...

  2. Django框架学习(一)Django框架安装和项目创建详解

    Django框架学习(一)Django框架安装和项目创建详解 文章目录 Django框架学习(一)Django框架安装和项目创建详解 一.简介 1.1介绍 1.2 URL 1.3.框架原理 二.安装 ...

  3. Django框架快速入门之后台管理admin(书籍管理系统)

    Django框架快速入门之后台管理admin(书籍管理系统) 一.Django框架介绍 什么是框架? 软件框架就是为实现或完成某种软件开发时,提供了一些基础的软件产品, 框架的功能类似于 基础设施 , ...

  4. Python高级-Django框架-01入门

    欢迎学习django课程 软件框架 问题1:什么是软件框架? 举个简单的例子,对于一个公司来说,公司中有各个职能部门,每个部门各司其职,通过部门之间的配合来完成工作,这些部门就形成了一个公司的组织架构 ...

  5. Django框架学习

    Django是现在世界上python语言应用最广泛.发展最成熟的web框架.它足够完整 ,不需要依赖其他就可以开发出 非常完整的web应用.Django的主要内容如下: Django综述:了解Djan ...

  6. Python Web开发——Django框架学习

    文章目录 Web开发简介 Web应用技术 Web前端开发 Web后端开发 使用 Django 开发后端服务 项目目标 管理员操作 登录界面 客户管理界面 添加客户界面 药品管理界面 添加药品界面 订单 ...

  7. Django 框架快速入门

    1. Django是什么 Django 是一个高级的 Python Web 框架,它最初是加拿大劳伦斯出版集团用于管理旗下新闻网站内容的设计.它鼓励快速开发和清洁,负责 Web 开发的许多麻烦,因此开 ...

  8. Django框架之入门介绍

    Python下有许多款不同的Web框架.Django(发音:[`dʒæŋɡəʊ]) 是重量级选手中最有代表性的一位,许多成功的网站和APP都基于Django. 作为Python最重要的框架之一,Dja ...

  9. python的django框架从入门到熟练【保姆式教学】第一篇

    当今,Python已成为最受欢迎的编程语言之一.而Django是一个基于Python的Web框架,它能够帮助你快速.高效地开发Web应用程序.如果你是一名初学者,学习Django框架可能会让你感到有些 ...

最新文章

  1. LeetCode实战:二叉树的最大深度
  2. 在windows上搭建react-native的android环境
  3. 【数据结构与算法】之深入解析“两数之和”的求解思路与算法示例
  4. 大学期末考试SSH试题四
  5. 表头大小设置_Excel技巧:单线表头及多线表头的制作方法
  6. Fixed Function Shader
  7. AJPFX分析int 和integer的区别
  8. android slidingmenu框架,常用框架之SlidingMenu的使用(基于AndroidStudio)
  9. 数字签名和加密的基本原理及其区别?
  10. Python对Excel的操作(openpyxl)
  11. 虚拟化技术(1)——介绍
  12. NT平台ADSL拨号连接密码恢复原理
  13. 【Java · 类加载】类加载器
  14. Linux驱动开发(十三)---USB驱动HID开发学习(鼠标)
  15. 土壤数据库一些参数解释和补充说明
  16. 计算机cpu结构实物图片,cpu内部结构显微图/cpu内部结构放大图
  17. 女生叫你哥和大哥区别_大哥正望着你
  18. 数据库开启遇到的keng
  19. 【千纸诗书】—— PHP/MySQL二手书网站后台开发之项目设计
  20. LaTeX入门|(2)定制专属模板

热门文章

  1. 深圳市怎么样 官田学校介绍
  2. JavaScript--倒计时
  3. 农村家庭暴力有什么应对的措施
  4. 诸如i云保网络保险平台的内勤裁员之路在哪里?
  5. es java 删除索引_使用java中的elasticSearch 2.3.3按索引名称和类型删除索引
  6. “绿宝书”好在哪?前端大佬们都在推荐
  7. @MDS SpringBoot的简单项目搭建
  8. Scrapy 简易爬取Boss直聘 可设定city job 爬取工作到excel或mysql中
  9. 《C#零基础入门之百识百例》(九十一)预处理器指令 -- 代码示例
  10. 区块链游戏,只是一场游戏….