Model 模型

Model 模型
模型是你的数据的唯一的、权威的信息源。它包含你所存储的数据的必要字段和行为。
通常,每个模型对应数据库中唯一的一张表。

  • 每个模型都是dhango.db.models.Model 的一个Python子类
  • 模型的每个属性都表示数据中的的一个字段
  • Django提供一套自动生成的用于数据库访问的API。这极大地减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动。

模型与数据库的关系

模型负责业务对象和数据库的关系映射
ORM是“对象-关系-映射”的简称,主要任务是:
1.根据对象的类型生成表结构
2. 将对象、列表的操作,转换为sql语句
3. 将sql查询到的结果转换为对象,类表

为什么要用模型?
Model是MVC框剪中重要的一部分,主要负责程序中用于处理数据逻辑的部分。通常模型对象负责在数据库中读取数据。
它实现了数据模型与数据库的解耦,即数据模型的数据不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库。

配置Mysql数据库
1.在当前环境中安装mysql

1 sudo apt-get install mysql-server
2 sudo apt install mysql-client
3 sudo apt install libmysqlclient-dev

2.在当前的python环境中安装pymysql

1 pip3 install pymysql

3.在mysql中创建数据库

1 creat database mydb default charset=utf8

4.在Django项目中配置数据库
修改settings.py文件中的DATABASE配置项

 1 DATABASES =[
 2     'default':{
 3     'ENGINE':'django.db.backends.mysql',
 4     'NAME':'mydb', #选择数据库的名,确认你的mysql中有这个库
 5     'USER':'root',
 6     'PASSEORD':'123456',
 7     'HOST':'localhost',
 8     'PORT':'3306',
 9     }
10 ]

5.告诉Django在接下来的mysql操作中使用pymysql
打开mysite/__init__.py ,写入以下代码导入pymydql:

1 import pymysql
2 pymysql.install_as_MySQLdb()

开发流程

1.在models.py中定义模型类,要求继承自models.Model

 1 from django.db import models
 2 
 3 #Create your models here.
 4 
 5 #用户信息模型
 6 class Users(models.Model):
 7     username = models.CharField(max_length=32)
 8     password = models.CharField(max_length=32)
 9     email = models.CharField(max_length=50)
10 
11     #class Meta:
12     #        db_table = 'polls_users' #指定表名

上面的指定表名的两行内容可以不写,django会自动生成一个表名。
例如:如果应用的名称为polls,则生成的表名wiepolls_users。

2.把应用加入settings.py的installed_app项
编辑mysite/settings.py文件,并将项目应用文件名添加到INSTALLED_APPS中

 1 INSTALLED_APPS = [
 2 
 3     'django.contrib.admin',
 4 
 5     'django.contrib.auth',
 6 
 7     'django.contrib.contenttypes',
 8 
 9     'django.contrib.sessions',
10 
11     'django.contrib.messages',
12 
13     'django.contrib.staticfiles',
14 
15     'myweb',
16 ]

3.生成迁移文件

python3 manage.py makemigtations

4.执行迁移

python3 manage.py migrate

5.使用模型进行操作

猜你喜欢

转载自www.cnblogs.com/doitjust/p/9096616.html