一、MVC视图
- M :Model 模型
应用程序中用于处理应用程序数据逻辑部分;
通常模型对象负责在数据库中存取数据;
- V:View 视图
应用程序中处理数据显示部分;
通常视图是依据模型数据创建的;
- C:Controller 控制
应用程序中处理用户交互部分;
通常控制器负责从视图中读取数据,控制用户输入,并向模型发送数据;
二、MTV视图
MTV本质上跟MVC没有什么区别,也是各组件的耦合,只是定义上有一些不同而已。
- Model 模型
负责业务对象与数据库对象(ORM)
- Template 模板
负责如何把页面展示给用户
- View 视图
负责业务逻辑,并在适当的时候调用Model和Template
三、Django项目的创建
新建项目
- django-admin startproject projectName
- 例如 : dajango-admin startproject Djangoproject
- 这样子就创建了一个Django项目 项目名为Djangoproject
重要目录层级说明
- manage.py 一个命令行工具 可以使我们用多种方式跟Django进行交互
- __init__.py 是一个空文件 用来表示这个文件夹是一个包
- settings.py 项目的配置文件
- urls.py 项目的url声明 (路由器)
- wsgi.py 项目与WSGI兼容的Web服务器入口(网关接口,通常用在现线上环境部署)
项目的运行
- python manage.py runserver
- python manage.py runserver 8000 #指定端口号
- python manage.py runserver 0.0.0.0:8000 #指定IP和端口号
- python manage.py runserver 0:8000 #上面的缩写
四、创建应用
首先 ,要先进入项目的目录下面 ,再接着创建应用 。
进入目录下
- cd projectName
- 例如:cd Djangoproject
创建应用
- python3 manage.py startapp appName
- 例如:python3 manage.oy startapp meituan
#一个叫做meituan的应用就创建好了
五、激活应用
激活应用需要将app的名字加到 settings.py
中的 INSTALL_APPS
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'appName' # 添加自己的应用
]
请求流程:用户请求 -> url -> views -> templates -> 用户响应(从后往前写)
实例化 : 用户在浏览器上输入 127.0.0.1:8000/meituan/ 浏览器就会查找urls文件中有没有这个meituan这个应用 这个时候就需要用到我们的正则表达式了 查找到了这个url后就调用视图中也就是views中定义的函数 然后接着查看 模版中有没有内容 接着就返回响应给用户
六、设计表的结构
班级表
表名:grade
字段:序号id 、班级名字name 、开班时间 gdate 等等
学生表
表名:students
字段:序号id 、 学生名字name 、学生性别sex 、年龄age 等等
七、定义模型
- 班级表
模型类需要继承model.Model类
class Grades(models.Model):
# 对应字段,以及字段类型
# id = models.IntegerField()
gname = models.CharField(max_length=30)
gdate = models.DateField()
gboynum = models.IntegerField()
ggirlnum = models.IntegerField()
isdel = models.BooleanField(default=False)
- 学生表
# 学生表Students
class Students(models.Model):
# 在没有添加主键时,它会在生成时自动添加主键
# id = models.IntegerField()
sname = models.CharField(max_length=30)
ssex = models.CharField(max_length=10)
sage = models.IntegerField()
sbrief = models.CharField(max_length=50)
isdel = models.BooleanField(default=False)
# 关联外键(学生都会有一个班级)
sclass = models.ForeignKey('Grades')
八、数据库中生成对应的表单
- 生成迁移文件
- python manage.py makemigrations
- 执行迁移
- python manage.py migrate