标签:admin 数据库 py django -- models 模块 Django
前言
缺少全栈的练手项目,找了一本书《自动化平台测试开发:python测试开发实战》用来边做边练习,希望能坚持下来。
中间几天又出去玩做了几天的废材,终究是不爱学习的人。第三章看了一下,要补充的基础信息比较多,包括mtc模型,对model和admin有个大概的了解,涉及到操作数据库以及bootstrap4的医用。
目录
一、预备知识的了解
第一章登录的设计没有涉及到数据库的读取,到产品模块设计设计到链接操作数据库内容等,所以对设计模型有个系统的了解。
1.1 MVC 与 MTV模型
MVC 模型
MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
MVC 以一种插件式的、松耦合的方式连接在一起。
- 模型(M)- 编写程序应有的功能,负责业务对象与数据库的映射(ORM)。
- 视图(V)- 图形界面,负责与用户的交互(页面)。
- 控制器(C)- 负责转发请求,对请求进行处理。
MTV 模型
Django 的 MTV 模式本质上和 MVC 是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django 的 MTV 分别是指:
- M 表示模型(Model):编写程序应有的功能,负责业务对象与数据库的映射(ORM)。
- T 表示模板 (Template):负责如何把页面(html)展示给用户。
- V 表示视图(View):负责业务逻辑,并在适当时候调用 Model和 Template。
1.2 Django 的model的用法
Django 模型使用自带的 ORM。
对象关系映射(Object Relational Mapping,简称 ORM )用于实现面向对象编程语言里不同类型系统的数据之间的转换。
ORM 在业务逻辑层和数据库层之间充当了桥梁的作用。
ORM 是通过使用描述对象和数据库之间的映射的元数据,将程序中的对象自动持久化到数据库中。
1.2.1 新建应用
$django-admin.py startapp TestModel
django新建一个model需要新建app应用,必须新建对应的目录
目录结构如下:
HelloWorld
|-- HelloWorld
|-- manage.py
...
|-- TestModel
| |-- __init__.py
| |-- admin.py
| |-- models.py
| |-- tests.py
| `-- views.py
1.2.2 定义model文件
# models.py
from django.db import models
class Test(models.Model):
name = models.CharField(max_length=20)
# test 是相当于一个对象实例,一张表
@model.CharField 代表字段定义成name
以上的类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。
1.3.3 添加应用到settings文件
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'TestModel', # 添加此项
)
1.3.4 同步 models的操作到db
$ python3 manage.py migrate # 创建表结构
$ python3 manage.py makemigrations TestModel # 让 Django 知道我们在我们的模型有一些变更
$ python3 manage.py migrate TestModel # 创建表结构
python3 manage.py makemigrations
这里是指生成迁移文件,还未进行同步到数据库
python3 manage.py migrate
这里是将迁移同步到数据库,真值实现定义的表文件生成
标签:admin,数据库,py,django,--,models,模块,Django 来源: https://blog.csdn.net/fengjiajia8699/article/details/122474715
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。