Django模型应用
在Web 应用中,主观逻辑经常牵涉到与数据库的交互。数据库驱动网站在后台连接数据库服务器,从中取出一些数据,然后在 Web 页面用漂亮的格式展示这些数据。这个网站也可能会向访问者提供修改数据库数据的方法。在django中同样提供了数据库的交互功能,就是我们所说的MTV中的‘M’。
ORM
django框架中的数据库交互属于典型的ORM交互模式。即对象关系映射,这是是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。
面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。
对象关系映射(Object-Relational Mapping)提供了概念性的、易于理解的模型化数据的方法。ORM方法论基于三个核心原则:简单:以最基本的形式建模数据。传达性:数据库结构被任何人都能理解的语言文档化。精确性:基于数据模型创建正确标准化的结构。典型地,建模者通过收集来自那些熟悉应用程序但不熟练的数据建模者的人的信息开发信息模型。建模者必须能够用非技术人员可以理解的术语在概念层次上与数据结构进行通讯。建模者也必须能以简单的单元分析信息,对样本数据进行处理。ORM专门被设计为改进这种联系。
数据库创建
对数据库的操作需要首先一定要有一个数据库。Django支持PostgreSQL,Mysql,SQLite ,Oracle等众多数据库,一些非关系型数据库也支持,只是需要进行相应的配置,我们这里以Mysql为例来说明。
在系统中安装相应的数据库管理系统,然后就可以创建数据库了,具体过程可以参考数据库操作的教程。在这里只强调一点,就是创建数据库的格式问题,很多时候我们创建的数据库并不是utf-8的格式,这样在后续的数据库操作中如果出现中文就会很麻烦,你需要将使用的表改为utf-8的格式。所以索性我们就直接将数据库创建为utf-8的格式。
CREATE DATABASE [databasename] DEFAULT CHARACTER SET utf8 COLLATEutf8_general_ci
配置和模块创建
在使用模块操作数据库之间需要先进行settings的配置和模块的创建。在settings中有一块专门进行数据库的配置如下:
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql', #数据库引擎
'NAME':'Bookdb', #数据库名
'USER':'root', #用户名
'PASSWORD':'123', # 密码
'HOST':'', #主机,如果是本机可以为空
'PORT':'', #端口号,如果是本机可以为空
}
}
上面的配置很简单,主要是登陆数据库的信息,如果你用的数据库不是mysql那么根据相应的数据库进行配置即可。当然这个配置指的是开发阶段在本机上进行,以django自带的服务器作为测试服务器。如果是项目进行部署的化很显然这种配置是不行的,需要根据部署的网络服务器和系统环境进行相应的配置,我们会在后续部署的学习中涉及。
配置完成后就就可以创建数据库模块了。在django中模型文件为models.py 这个文件需要放在app文件夹中。其实不需要我们亲自创建,当你创建一个应用的时候这个文件会被自动创建完成,你只需要将app添加在settings的app列表中即可。剩下的工作就是编写models.py文件了。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'books',
]