django2.0实现投票应用程序2

编写你的第一个 Django 应用,第 2 部分

现在接着教程的第1部分继续往后面讲。我们将建立数据库,创建您的第一个模型(models),并主要关注 Django 提供的自动生成的管理页面(admin)。

1.数据库配置

现在,打开 mysite/settings.py 。这是个包含了 Django 项目设置的 Python 模块。

通常,这个配置文件使用 SQLite 作为默认数据库。如果你不熟悉数据库,或者只是想尝试下 Django,这是最简单的选择。Python 内置 SQLite,所以你无需安装额外东西来使用它。当你开始一个真正的项目时,你可能更倾向使用一个更具扩展性的数据库,例如 PostgreSQL,避免中途切换数据库这个令人头疼的问题。

对于初学者来说,最好还是先使用默认的数据库。

在默认情况下,我们的 mysite/settings.py文件中的有关数据库的配置是这样的:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

如果你是使用的是mysql,所以,我们需要把这个地方修改一下,来使用你的数据库连接设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',   
        'NAME': 'db_polls', #可变
        'USER':'root',      #可变
        'PASSWORD':'root',  #可变
        'HOST':'localhost', 
        'PORT':'3306',  
    }
}

其中,default下面的各个选项的解释为:

  • ENGINE– 代表我们使用的数据库引擎,可选值有 'django.db.backends.sqlite3''django.db.backends.postgresql''django.db.backends.mysql',或 'django.db.backends.oracle'

    你会发现只是需要改变的只是最右边的的数据库的名称。

  • NAME数据库的名称。如果使用的是 SQLite,数据库将是你电脑上的一个文件,在这种情况下,NAME应该是此文件的绝对路径,包括文件名。默认值 os.path.join(BASE_DIR, 'db.sqlite3') 将会把数据库文件储存在项目的根目录。创建项目的时候,django已经帮你弄好了。

  • USER:连接数据库的用户名,也就是你之前安装mysql的时候填写的信息

  • PASSWORD: 连接数据库所使用的密码

  • HOST: 数据库所在的主机地址,默认是本地,所以是localhost

  • PORT: 数据库所占有的端口,也就是端口号

PS.注意大小写

编辑 mysite/settings.py 文件前,先设置 TIME_ZONE为设置成我们中国的时区’Asia/Shanghai’

TIME_ZONE = 'Asia/Shanghai'

此外,关注一下文件头部的 INSTALLED_APPS 设置项。这里包括了会在你项目中启用的所有 Django 应用。应用能在多个项目中使用,你也可以打包并且发布应用,让别人使用它们。

通常, INSTALLED_APPS默认包括了以下 Django 的自带应用:

  • django.contrib.admin – 管理员站点, 你很快就会使用它。
  • django.contrib.auth – 认证授权系统。
  • django.contrib.contenttypes – 内容类型框架。
  • django.contrib.sessions– 会话框架。
  • django.contrib.messages – 消息框架。
  • django.contrib.staticfiles – 管理静态文件的框架。

这些应用被默认启用是为了给常规项目提供方便,上面也有自带的后台管理,理解一下上面django自带的应用就好,当有需要改动的话,才去弄。

默认开启的某些应用需要至少一个数据表,所以,在使用他们之前需要在数据库中创建一些表。请执行以下命令:

python manage.py migrate

运行上面这条命令的结果:
django2.0实现投票应用程序2_第1张图片
这个 migrate命令检查 INSTALLED_APPS设置,为其中的每个应用创建需要的数据表,至于具体会创建什么,这取决于你的 mysite/settings.py 设置文件和每个应用的数据库迁移文件。

PS.如果你不需要某些默认的应用的话,你可以在运行 migrate前毫无顾虑地从 INSTALLED_APPS 里注释或者删除掉它们。 因为migrate只会把 INSTALLED_APPS 声明的应用进行数据库迁移。

Django 到底创建了哪些表 ,不同的数据库通过不同的命令查看

  • \dt (PostgreSQL),

  • SHOWTABLES; (MySQL),

  • .schema (SQLite)

  • SELECT TABLE_NAME FROM USER_TABLES; (Oracle)

2.创建模型

在 Django 里写一个数据库驱动的 Web 应用的第一步是定义模型 - 也就是数据库结构设计和附加的其它元数据。

简单来说,就是设计一下数据库,数据库里面存在哪些表。

PS.只需要定义数据模型,Django 的迁移代码是由你的模型文件自动生成的

在这个简单的投票应用中,需要创建两个模型:

  • Question 模型包括问题描述和发布时间。

  • Choice 模型有两个字段,选项描述和当前得票数。每个选项属于一个问题。 涉及到外键的问题

编辑 polls/models.py 文件:

from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length = 200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    question = models.ForeignKey(Question,on_delete = models.CASCADE)
    choice_text = models.CharField(max_length = 200)
    votes = models.IntegerField(default = 0)

首先要先导入那个模块,django默认帮你导入了,所以你自己不用再导入了。

每个模型被表示为 django.db.models.Model类的子类。所以我们都要把models.Model作为参数传进去。

每个模型有一些类变量,它们都表示模型里的一个数据库字段,通过例子来说明:

question_text = models.CharField(max_length = 200)
  • question_text就是类变量,同时也代表一个数据库的字段(字段名)
  • 每个字段都是 Field类的实例 ,字符字段被表示为 CharField,日期时间字段被表示为 DateTimeField
  • 同时也表明每个字符要处理的数据类型

PS.你可以使用可选的选项来为 Field 定义一个人类可读的名字。这个功能在很多 Django 内部组成部分中都被使用了,而且作为文档的一部分。如果某个字段没有提供此名称,Django 将会使用对机器友好的名称,也就是变量名。

简单来说,你没有给字段一个名字的时候,django默认使用那个类变量的名字。

定义某些 Field类实例需要参数。

CharField 需要一个 max_length 参数。

Fiel

你可能感兴趣的:(django开发之路,django,python,投票小应用)