Django models模型
一. 所谓Django models模型,是指的对数据库的抽象模型,models在英文中的意思是模型,模板的意思,在这里的意思是通过models,将数据库的借口抽象成python自己的一个类。然后在python Django框架其他代码文件中,可以通过在models代码文件中抽象出来的数据接口模型板模型类对数据库进行一系列的其他操作。
二. Django 对各种数据库都能提供很好的支持,如mysql,oracle,postgresql,sqlite等,diango为这些数据库提供了统一的调用API,我们可以根据自己业务需求选择不同的数据库。也就是缩django调用封装好这些数据库以后,我们对这些数据的操作都是一样的。
MySQL 是 Web 应用中最常用的数据库,现在接下来,我们都将以 Mysql 作为例进行测试学习,如果你没安装 mysql 驱动,可以执行以下命令安装:
sudo pip install mysqlclient
数据库配置:
我们在使用数据库的时候,需要在项目的 settings.py 文件中找到 DATABASES 配置项,配置一下有关数据的配置文件,使我们的django项目能远程连接到我们的数据库。
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql', # 或者使用 mysql.connector.django
'NAME': 'test',
'USER': 'test',
'PASSWORD': 'test123',
'HOST':'localhost',
'PORT':'3306',
}
}
注:我们这里这里添加了中文注释,所以你需要在项目的settings.py 文件头部添加
# -*- coding: UTF-8 -*-。
接下来在我们的项目中,无论是python项目文件还是html项目文件,只要我们使用中文或者使用中文注释,都必须在前面加上# -*- coding: UTF-8 -*-,来支持中文显示。
上面的配置文件中包含了数据库名称和用户的信息,它们与 MySQL 中对应数据库和用户的设置相同。Django 根据这一设置,与 MySQL 中相应的数据库和用户连接起来。
三.django定义规定,只要我们使用models数据库模板,就必须创建一个app实例,经测试,如果不启用实例,models会不起作用而且还会报错。以后这个待有机会再验证一下。
因为我们我们服务器暂时没安装mysql,django默认使用小型数据库sqlite,sqlite与mysql数据库在使用方式上相同,
我们创建一个关于数据库的模型,因为每个模型都是跟数据库相对应的,所以我们可以起一个关于数据的名字:
django-admin.py startapp bookmodels
我们也可以这样命名bookdb_models,这里我们暂时使用bookmodels命名。
目录结构如图所示:
添加代码如下:
# -*- coding: utf-8 -*- //支持中文
from __future__ import unicode_literals
from django.db import models
class bookdb(models.Model):
book_id=models.AutoField(primary_key=True)
book_name = models.CharField(max_length=32)
pub_date=models.DateField()
price=models.DecimalField(max_digits=6,decimal_places=2)
publish=models.CharField(max_length=32)
注:只要使用models就必须加入这句话:
from django.db import models
意思是从django.db文件中引入models数据库模板,而django.db文件中封装了一个models模板类,用来表示和表达数据库,并通过这models类封装了数据库接口,并通过他对数据库进行操作。
注:models在django里面可以理解为就是数据库的意思。
而models中的Model,则代表数据库其中的一个表格模板。我们创建一个表,就需要调用这个Model表格模板。