当前位置:K88软件开发文章中心网站服务器框架django → 文章内容

Django 模型进阶

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-25 14:19:15

Django 数据库层的探索。 首先,我们需要做些初始配置;我们需要告诉Django使用什么数据库以及如何连接数据库。我们假定你已经完成了数据库服务器的安装和激活,并且已经在其中创建了数据库(例如,用 CREATE DATABASE语句)。 如果你使用SQLite,不需要这步安装,因为SQLite使用文件系统上的独立文件来存储数据。象前面章节提到的 TEMPLATE_DIRS 一样,数据库配置也是在Django的配置文件里,缺省 是 settings.py 。 打开这个文件并查找数据库配置:DATABASE_ENGINE = ''DATABASE_NAME = ''DATABASE_USER = ''DATABASE_PASSWORD = ''DATABASE_HOST = ''DATABASE_PORT = ''配置纲要如下。DATABASE_ENGINE 告诉Django使用哪个数据库引擎。 如果你在 Django 中使用数据库, DATABASE_ENGINE必须是 Table 5-1 中所列出的值。表 5-1. 数据库引擎设置设置数据库所需适配器postgresqlPostgreSQLpsycopg 1.x版,http://www.djangoproject.com/r/python-pgsql/1/。postgresql_psycopg2PostgreSQLpsycopg 2.x版,http://www.djangoproject.com/r/python-pgsql/。mysqlMySQLMySQLdb , http://www.djangoproject.com/r/python-mysql/.sqlite3SQLite如果使用Python 2.5+则不需要适配器。 否则就使用pysqlite ,http://www.djangoproject.com/r/python-sqlite/。oracleOraclecx_Oracle ,http://www.djangoproject.com/r/python-oracle/.要注意的是无论选择使用哪个数据库服务器,都必须下载和安装对应的数据库适配器。 访问表 5-1 中“所需适配器”一栏中的链接,可通过互联网免费获取这些适配器。 如果你使用Linux,你的发布包管理系统会提供合适的包。 比如说查找python-postgresql 或者python-psycopg 的软件包。配置示例:DATABASE_ENGINE = 'postgresql_psycopg2'DATABASE_NAME 将数据库名称告知 Django 。 例如:DATABASE_NAME = 'mydb'如果使用 SQLite,请对数据库文件指定完整的文件系统路径。 例如:DATABASE_NAME = '/home/django/mydata.db'在这个例子中,我们将SQLite数据库放在/home/django目录下,你可以任意选用最合适你的目录。DATABASE_USER 告诉 Django 用哪个用户连接数据库。 例如: 如果用SQLite,空白即可。DATABASE_PASSWORD 告诉Django连接用户的密码。 SQLite 用空密码即可。DATABASE_HOST 告诉 Django 连接哪一台主机的数据库服务器。 如果数据库与 Django 安装于同一台计算机(即本机),可将此项保留空白。 如果你使用SQLite,此项留空。此处的 MySQL 是一个特例。 如果使用的是 MySQL 且该项设置值由斜杠( '/' )开头,MySQL 将通过 Unix socket 来连接指定的套接字,例如:DATABASE_HOST = '/var/run/mysql'一旦在输入了那些设置并保存之后应当测试一下你的配置。 我们可以在mysite 项目目录下执行上章所提到的python manage.py shell 来进行测试。 (我们上一章提到过在,manager.py shell 命令是以正确Django配置启用Python交互解释器的一种方法。 这个方法在这里是很有必要的,因为Django需要知道加载哪个配置文件来获取数据库连接信息。)输入下面这些命令来测试你的数据库配置:>>> from django.db import connection>>> cursor = connection.cursor()如果没有显示什么错误信息,那么你的数据库配置是正确的。 否则,你就得 查看错误信息来纠正错误。 表 5-2 是一些常见错误。表 5-2. 数据库配置错误信息错误信息解决方法You haven’t set the DATABASE_ENGINE setting yet.不要以空字符串配置DATABASE_ENGINE 的值。 表格 5-1 列出可用的值。Environment variable DJANGO_SETTINGS_MODULE is undefined.使用python manager.py shell 命令启动交互解释器,不要以python 命令直接启动交互解释器。Error loading module: No module named .未安装合适的数据库适配器 (例如, psycopg 或 MySQLdb )。Django并不自带适配器,所以你得自己下载安装。_____ isn’t an available database backend.把DATABASE_ENGINE 配置成前面提到的合法的数据库引擎。 也许是拼写错误?database _____ does not exist设置DATABASE_NAME 指向存在的数据库,或者先在数据库客户端中执行合适的CREATE DATABASE 语句创建数据库。role _____ does not exist设置DATABASE_USER 指向存在的用户,或者先在数据库客户端中执创建用户。could not connect to server查看DATABASE_HOST和DATABASE_PORT是否已正确配置,并确认数据库服务器是否已正常运行。第一个应用程序你现在已经确认数据库连接正常工作了,让我们来创建一个 Django app-一个包含模型,视图和Django代码,并且形式为独立Python包的完整Django应用。在这里要先解释一些术语,初学者可能会混淆它们。 在第二章我们已经创建了 project , 那么 project 和 _app_之间到底有什么不同呢?它们的区别就是一个是配置另一个是 代码:一个project包含很多个Django app以及对它们的配置。技术上,project的作用是提供配置文件,比方说哪里定义数据库连接信息, 安装的app列表,TEMPLATE_DIRS ,等等。一个app是一套Django功能的集合,通常包括模型和视图,按Python的包结构的方式存在。例如,Django本身内建有一些app,例如注释系统和自动管理界面。 app的一个关键点是它们是很容易移植到其他project和被多个project复用。对于如何架构Django代码并没有快速成套的规则。 如果你只是建造一个简单的Web站点,那么可能你只需要一个app就可以了; 但如果是一个包含许多不相关的模块的复杂的网站,例如电子商务和社区之类的站点,那么你可能需要把这些模块划分成不同的app,以便以后复用。不错,你可以不用创建app,这一点应经被我们之前编写的视图函数的例子证明了 。 在那些例子中,我们只是简单的创建了一个称为views.py的文件,编写了一些函数并在URLconf中设置了各个函数的映射。 这些情况都不需要使用apps。但是,系统对app有一个约定: 如果你使用了Django的数据库层(模型),你 必须创建一个Django app。 模型必须存放在apps中。 因此,为了开始建造 我们的模型,我们必须创建一个新的app。在mysite 项目文件下输入下面的命令来创建books app:python manage.py startapp books这个命令并没有输出什么,它只在 mysite 的目录里创建了一个 books 目录。 让我们来看看这个目录的内容:books/ __in

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  下一页


Django 模型进阶