导语:这些笔记都是结合自己的学习和查找网上的资料笔记或者回答上整理,可能有很多内容类似,目的是为了让自己以后忘了知识点可以看自己写的笔记,第一次写技术笔记,多多包涵。
MVC
大部分开发语言中都有MVC框架
MVC框架的核心思想是:解耦
降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用
m表示model,主要用于对数据库层的封装
v表示view,用于向用户展示结果
c表示controller,是核心,用于处理请求、获取数据、返回结果
MVT
Django是一款python的web开发框架
与MVC有所不同,属于MVT框架
m表示model,负责与数据库交互
v表示view,是核心,负责接收请求、获取数据、返回结果
t表示template,负责呈现内容到浏览器
1.1搭建开发环境
我直接使用的是pycharm professional 也就是专业版,里面直接选择Django项目,会自动帮你安装虚拟python环境用来进行开发,按alt+F12可以进入Terminal
创建项目
命令
django-admin startproject test1
在上图的terminal打开输入即可
进入test1目录,目录结构如下图:
目录说明
manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互
内层的目录:项目的真正的Python包
init .py:一个空文件,它告诉Python这个目录应该被看做一个Python包
settings.py:项目的配置
urls.py:项目的URL声明
wsgi.py:项目与WSGI兼容的Web服务器入口
1.2设计模式
设计介绍
本示例完成“图书-英雄”信息的维护,需要存储两种数据:图书、英雄
图书表结构设计:
表名:BookInfo
图书名称:btitle
图书发布时间:bpub_date
英雄表结构设计:
表名:HeroInfo
英雄姓名:hname
英雄性别:hgender
英雄简介:hcontent
所属图书:hbook
图书-英雄的关系为一对多
数据库配置
在settings.py文件中,通过DATABASES项进行数据库设置
django支持的数据库包括:sqlite、mysql等主流数据库
Django默认使用SQLite数据库
创建应用
在一个项目中可以创建一到多个应用,每个应用进行一种业务处理
创建应用的命令:
python manage.py startapp booktest
应用的目录结构如下图,红色的是后面出现的文件,其他的是刚刚创建时候就存在的:
定义模型类
- 有一个数据表,就有一个模型类与之对应
- 打开models.py文件,定义模型类
- 引入包from django.db import models
- 模型类继承自models.Model类
- 说明:不需要定义主键列,在生成时会自动添加,并且值为自动增长
- 当输出对象时,会调用对象的str方法
from django.db import models
# Create your models here.
class BookInfo(models.Model):
btitle = models.CharField(max_length=20)
bpub_date = models.DateTimeField()
def ___str__(self):
return "%d" % self.pk
class HeroInfo(models.Model):
hname = models.CharField(max_length=20)
hgender = models.BooleanField()
hcontent = models.CharField(max_length=100)
hBook = models.ForeignKey('BookInfo',on_delete=models.CASCADE,)
def __str__(self):
return "%d" % self.pk
需要注意的是,在Django2.0中,与之前的1.8不同,models下的ForeignKey()之前的版本是这样写的
hBook = models.ForeignKey('BookInfo')
这代码在Django2.0下运行会提示这样的错误:
ypeError: __init__() missing 1 required positional argument: 'on_delete'
所以在Django2.0中应该:
hBook = models.ForeignKey('BookInfo',on_delete=models.CASCADE,)
其中,on update cascade 和on delete cascade 作用区别:
这是数据库外键定义的一个可选项,用来设置当主键表中的被参考列的数据发生变化时,外键表中响应字段的变换规则的。up