设置数据库,创建您的第一个模型,得到一个简单介绍 Django的自动生成管理网站。

数据库设置

现在,打开 mysite / settings.py 。 这是一个普通的Python模块 模块级变量代表Django设置。

默认情况下,配置使用SQLite。 如果你是新数据库,或 你只是在Django感兴趣,这是最简单的选择。 SQLite是 包括在Python中,所以你不需要安装其他的支持你 数据库。 在开始你的第一个真实的项目,然而,你可能想要使用一个 更健壮的数据库如PostgreSQL,避免database-switching头痛 埋下了伏笔。

如果你想使用另一个数据库,安装适当的 数据库 绑定 和改变下面的钥匙 数据库 “默认” 项目以匹配您的数据库连接 设置:

  • 引擎 ——要么 “django.db.backends.sqlite3” “django.db.backends.postgresql” “django.db.backends.mysql” ,或 “django.db.backends.oracle” 。 其他后端 也可用 。
  • 的名字 ——您的数据库的名称。 如果你使用SQLite 数据库将是一个文件在你的电脑上,在这种情况下, 的名字 应该是完整的绝对路径,包括文件名、文件。 的 默认值, os.path.join(BASE_DIR “db.sqlite3”) ,将存储文件 在你的项目目录中。

如果你不使用SQLite数据库,如额外的设置 用户 密码 主机 必须补充道。 更多细节,请参见参考文档 数据库 

除了SQLite数据库

如果您正在使用一个数据库除了SQLite,确保您已经创建了一个 数据库的这一点。 这样做与“ 创建 数据库 database_name;” 在你的数据库的交互式提示符。

确保提供的数据库用户 mysite / settings.py “创建数据库”的特权。 这允许自动创建 测试数据库 这将需要在后面的 教程。

如果你使用SQLite,您不需要创建任何事先的 数据库文件时将自动创建。

当你编辑 mysite / settings.py ,设置 TIME_ZONE 来 你的时区。

另外,请注意 INSTALLED_APPS 设置文件的顶部。 那 拥有所有Django的名字在这个Django应用程序被激活 实例。 应用程序可用于多个项目,你可以包和 分发他们使用的其他项目。

默认情况下, INSTALLED_APPS 包含以下应用程序,所有这一切 有Django:

  • django.contrib.admin ——管理网站。 你很快就会使用它。
  • django.contrib.auth ——一个身份验证系统。
  • django.contrib.contenttypes ——一个内容类型的框架。
  • django.contrib.sessions ——一个会话框架。
  • django.contrib.messages ——一个消息传递框架。
  • django.contrib.staticfiles ——一个框架来管理 静态文件。

这些应用程序都包含在默认情况下作为一个方便常见的情况。

其中的一些应用程序利用至少一个数据库表,不过, 所以我们需要在数据库中创建表之前,我们可以使用它们。 要做 ,运行以下命令:

  1. $ python manage.py migrate

的 迁移 命令查看 INSTALLED_APPS 设置 根据数据库并创建任何必要的数据库表的设置 在你的 mysite / settings.py 文件和数据库迁移 与应用程序(稍后我们将讨论这些)。 您将看到一条消息 迁移应用。 如果你有兴趣,你运行命令行客户端 数据库和类型 \ dt(PostgreSQL), 显示 表; (MySQL), . schema (SQLite),或 选择 TABLE_NAME 从 USER_TABLES; (Oracle)来显示 Django创建所需的表。

极简主义者的

像我们上面所说的,默认的应用程序包括为常见 ,但不是每个人都需要他们。 如果你不需要任何或所有的 随意注释掉或删除相应的线(年代) INSTALLED_APPS 在运行之前 迁移 。 的 迁移 命令只会运行迁移的应用程序 INSTALLED_APPS 

创建模型

现在我们将定义您的模型——从本质上说,您的数据库布局, 额外的元数据。

哲学

单一模型,最终的真相你的数据来源。 它包含 的基本字段和行为你存储的数据。 Django是 的 干燥的原理 。 我们的目标是在一个定义数据模型 并自动获得的东西。

这包括在Ruby On Rails迁移——不像,例如,迁移 完全是源自您的模型文件,基本上只是一个吗 历史Django可以通过更新您的数据库模式 你当前的模型相匹配。

在我们的简单调查应用程序,我们将创建两个模型: 问题 和 选择 。 一个 问题 有一个问题和出版日期。 一个 选择 有两个 字段:选择的文本和点票结果。 每一个 选择 相关联 与一个 问题 

这些概念是由简单的Python类。 编辑 民意调查/ models.py 文件,以便它看起来像这样:

民意调查/ models.py
  1. from django.db import models
  2.  
  3. class Question(models.Model):
  4. question_text = models.CharField(max_length=200)
  5. pub_date = models.DateTimeField('date published')
  6.  
  7. class Choice(models.Model):
  8. question = models.ForeignKey(Question, on_delete=models.CASCADE)
  9. choice_text = models.CharField(max_length=200)
  10. votes = models.IntegerField(default=0)

代码很简单。 每一个模型是由一个类表示 子类 django.db.models.Model 。 每个模型有很多类 变量,每一个都代表一个数据库字段在模型中。

每个字段由一个实例 场 类,例如, CharField 对字符字段和 DateTimeField 日期时间。 这告诉Django什么 每个字段的数据类型。

每一个的名字 场 (如实例。 question_text 或 pub_date 在machine-friendly)字段的名称, 格式。 您将使用这个值在Python代码中,和你的数据库将使用 这是列名。

您可以使用一个可选的第一个位置参数 场 指定一个人类可读的名字。 使用的 Django内省的地区,它兼具文档。 如果这个字段不是提供,Django将使用机器可读名称。 在这个 例子中,我们只定义了一个可读名称 Question.pub_date 。 在这个模型中,所有其他字段字段的机器可读名称 满足人类可读名称。

一些 场 类需要参数。 CharField 例如,要求你给它一个 max_length 。 不仅在使用 数据库模式,但在验证,我们很快就会看到。

一个 场 也可以有各种可选参数;在吗 这种情况下,我们设置 默认的 的价值 票 为0。

最后,注意定义的关系,使用 ForeignKey 。 Django告诉每个 选择 是 与一个单一的 问题 。 Django支持所有常见的数据库 关系:多对一,多对多,一对一。

激活模型

小的模型代码给Django很多信息。 ,Django 能:

  • 创建一个数据库模式( 创建 表 这个程序的语句)。
  • 创建一个Python数据库访问API来访问 问题 和 选择 对象。

但首先我们需要告诉我们的项目 民意调查 应用程序安装。

哲学

Django应用程序的“可插入”:你可以使用一个应用程序在多个项目, 您可以分发应用程序,因为他们没有与一个给定的 Django安装。

编辑 mysite / settings.py 文件,和改变 INSTALLED_APPS 设置包括字符串 “polls.apps.PollsConfig” 。 它会看起来像这样:

mysite / settings.py
  1. INSTALLED_APPS = [
  2. 'polls.apps.PollsConfig',
  3. 'django.contrib.admin',
  4. 'django.contrib.auth',
  5. 'django.contrib.contenttypes',
  6. 'django.contrib.sessions',
  7. 'django.contrib.messages',
  8. 'django.contrib.staticfiles',
  9. ]

包括现在Django知道 民意调查 应用。让我们运行一个命令:

  1. $ python manage.py makemigrations polls

您应该看到类似于下面的:

  1. Migrations for 'polls':
  2. 0001_initial.py:
  3. - Create model Choice
  4. - Create model Question
  5. - Add field question to choice

通过运行 makemigrations ,你告诉Django 一些更改您的模型(在这种情况下,你已经取得了新的) 你想更改存储为一个 迁移 

迁移是Django保存模型(因此你的变化 数据库模式)——他们只是文件在磁盘上。 你可以阅读迁移 如果你喜欢你的新模型,它的文件 民意调查/迁移/ 0001 _initial.py 。 别担心,你不会阅读 他们每次Django使人,但它们设计成人类可读 如果你想手动调整Django如何改变的事情。

有一个命令将运行和管理你的数据库的迁移 ——这叫做自动模式 迁移 ,我们会来的 的时刻,但首先,让我们看看SQL,迁移将运行。 的sqlmigrate 命令以迁移名称并返回SQL:

  1. $ python manage.py sqlmigrate polls 0001

您应该看到类似于下面的(我们重新格式化它 可读性):

  1. BEGIN;
  2. --
  3. -- Create model Choice
  4. --
  5. CREATE TABLE "polls_choice" (
  6. "id" serial NOT NULL PRIMARY KEY,
  7. "choice_text" varchar(200) NOT NULL,
  8. "votes" integer NOT NULL
  9. );
  10. --
  11. -- Create model Question
  12. --
  13. CREATE TABLE "polls_question" (
  14. "id" serial NOT NULL PRIMARY KEY,
  15. "question_text" varchar(200) NOT NULL

Django数据库设置的更多相关文章

  1. django数据库设置为MySQL

    django默认使用sqlite,然后想使用MySQL数据库 在项目的setting文件中找到 DATABASES = { 'default': { 'ENGINE': 'django.db.back ...

  2. [Django_1_2]数据库设置

    Django 数据库设置 本篇将介绍Django中的数据库设置,了解模型(models,数据库中的表项设计). 上一篇文章为:<a href="http://www.cnblogs.c ...

  3. Python之路【第十九章】:Django 数据库对象关系映射

    Django ORM基本配置 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去 ...

  4. Django 2.0 学习(04):Django数据库

    数据库设置/配置 打开mysite/settings.py,我们会发现Django是用的是默认的数据库SQLite,如下图所示: Django也是支持其它数据库的,比如PostgreSQL.MySQL ...

  5. Django 数据库查询集合(双下划线连表操作)

    Django是一款优秀的web框架,有着自己的ORM数据库模型.在项目中一直使用django数据库,写一篇文章专门记录一下数据库操作.略写django工程创建过程,详写查询过程.可以和sqlalche ...

  6. Flask之数据库设置

    4 数据库 知识点 Flask-SQLALchemy安装 连接数据库 使用数据库 数据库迁移 邮件扩展 4.1 数据库的设置 Web应用中普遍使用的是关系模型的数据库,关系型数据库把所有的数据都存储在 ...

  7. Django数据库数据表操作

    建立表单 django通过设置类来快速建表,打开models.py 例: from __future__ import unicode_literals from django.db import m ...

  8. django数据库迁移时候异常

    django数据库迁移时候异常 一.错误信息 Django在根据models生成数据库表时报 init() missing 1 required positional argument: 'on_de ...

  9. Django 数据库查询集合(多对多)

    Django 数据库查询集合(双下划线连表操作) 目录: 1.Django环境搭建 2.数据库建表 3.写入数据 4.查询语句 Django环境搭建 1.安装django pip install dj ...

随机推荐

  1. C#(数据类型)

    刚开始学c#!!!

  2. Spring MVC 详解(一)

    springmvc是spring的一个模块,提供web层解决方案(基于mvc设计架构),mvc是一个设计模式,在b/s系统的应用: spring 的架构 mvc设计模式 spring MVC的框架 第 ...

  3. py延迟注入SQL脚本

    延迟注入工具(python) #!/usr/bin/env python # -*- coding: utf-8 -*- # 延迟注入工具 import urllib2 import time imp ...

  4. sencha touch之模型(model)

    模型的实例相当于数据库中表的一条记录. 一般模型在\app\model下创建,而且必须遵守类的命名规则,也就是可以根据类名找到模型的定义文件. 所有模型类都要从Ext.data.Model或Ext.d ...

  5. c++实现两个文件的拼接。

    问题描述: 要求把第二个文件拼接到第一个文件的末尾. 如把file2 拼接到 file末尾. (直接复制一下不就行了嘛! 但是老师非让编程, 真是蛋疼!!,而且是闲的蛋疼!!!).例如: file1: ...

  6. 【T-SQL系列】临时表、表变量

    临时表临时表与永久表相似,只是它的创建是在Tempdb中,它只有在一个数据库连接结束后或者由SQL命令DROP掉,才会消失,否则就会一直存在.临时表在创建的时候都会产生SQL Server的系统日志, ...

  7. 基于Linux的oracle数据库管理 part6 (backup 相关的脚本)

    这里只是简单的介绍几种 备份方法 备份: 逻辑备份, 冷备份, 热备份 逻辑备份 也称作 导入(import), 导出(export), 作用是在不同的oracle数据库之间转移数据 物理备份, 就是 ...

  8. JavaScript的严格模式

    js除了在普通的常规模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode).严格模式支持IE9+ Chrome FireFox 等主流浏览器. ...

  9. JS自总结

    1.js获得当前元素   event.srcElement:   获取当前父元素   event.srcElement.parentElement   var rowIndex = e.parentE ...

  10. Java将其他数据格式转换成json字符串格式

    package com.wangbo.util; import java.beans.IntrospectionException; import java.beans.Introspector; i ...