开始学习Django吧!~教程第二部分~

简而言之

这是上次的延续。
在这次的教程中,我想要实施以下项目。

    • データベースのセットアップ

 

    • モデルの作成

 

    Djangoが提供してくれる、管理サイトの活用

数据库的配置

在mysite/settings.py中进行数据库配置。

# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases

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

以下是数据库的设置部分。
这次我们以MySQL为例,将在本地环境中启动MySQL数据库服务器并尝试连接。

下面是以下的设置。

# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dbname',  # 適当です
        'USER': 'dbuser',  # 適当です
        'PASSWORD': 'FIXME',  # 適当です
        'HOST': 'FIXME',  # 適当です (ローカルホストなら空でも可)
        'PORT': 'FIXME',  # 適当です (デフォルトポートなら空でも可)
    }
}

下一步,使用pip安装Python中用于操作MySQL的模块。

$ pip install PyMySQL

在最后,我宣布在Django项目中使用MySQL。
默认情况下,它使用的是SQLite,因此让我们在manage.py中进行以下的编写。

import pymysql
pymysql.install_as_MySQLdb()

到此为止,启动服务器。

$ python manage.py runserver

如果出现以下结果,则表示连接正常。
请确认已消除所有迁移错误。

[t.fujimoto@tfujimoto-MacBook-Air:mysite]$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
October 12, 2016 - 12:51:50
Django version 1.10.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

settings.py的内容

这是设置.py文件,用于配置整个项目,包括数据库设置等。其中写有各种重要的配置项。

其中,INSTALLED_APPS是非常重要的。
INSTALLED_APPS保存着在此项目的Django实例中启用的所有Django应用程序的名称。

应用程序可以被多个项目使用,也可以引入其他开发者创建的应用程序。

在初期阶段,设置如下。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

每个应用程序都承担以下类似的角色。

    • django.contrib.admin

管理サイトアプリ

django.contrib.auth

認証アプリ

django.contrib.contenttypes

コンテンツタイプフレームワーク

django.contrib.sessions

セッションフレームワーク

django.contrib.messages

メッセージフレームワーク

django.contrib.staticfiles

静的ファイルの管理フレームワーク

这是一个常用于Web应用程序的镜像,其中包含默认安装的应用程序。

这些应用程序使用数据库。因此,必须创建表作为初始设置。

通过以下命令,可以执行迁移文件:
使用以下命令,可以执行迁移文件:
请执行以下命令以执行迁移文件:

$ python manage.py migrate

创建模型

模型是对现有数据的唯一决定性来源。
模型需要描述对于所需存储的数据,所必需的字段和数据的行为。

在这个教程中,我们正在制作一个投票应用程序,
我们将创建一个Question表(模型),其中包含投票选项,以及一个Choice表(模型),用于存储Question的投票选项文本等信息。

以下的情况如下。

from django.db import models

# Create your models here.


class Question(models.Model):
    quesion_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)

激活模型

模型已经建立,但尚未在数据库中反映出来。

    • CREATE TABLE

 

    QuestionやChoiceオブジェクトにPythonからアクセスする為のデータベースAIPの作成

为了实现以上目标,我们将进行配置。

首先,在Django项目中需明确使用polls应用程序。

我之前介绍的是要将mysite/settings.py文件中的INSTALLED_APPS修改为以下内容。

INSTALLED_APPS = [
    'polls.apps.PollsConfig',  # 追加
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

如果可以进行上述的追加,将创建迁移脚本。
可以使用以下命令来创建迁移脚本。

$ python manage.py makemigrations polls

通过执行makemigrations命令,可以告知Django模型发生了更改,并将更改保存为迁移文件的形式。

迁移是Django将模型更改保存到磁盘文件的方法。生成的迁移以数字的形式存储在每个应用程序的迁移目录中。

以下是我们这次创建的迁移脚本。

# -*- coding: utf-8 -*-
# Generated by Django 1.10.2 on 2016-10-12 13:20
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Choice',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('choice_text', models.CharField(max_length=200)),
                ('votes', models.IntegerField(default=0)),
            ],
        ),
        migrations.CreateModel(
            name='Question',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('quesion_text', models.CharField(max_length=200)),
                ('pub_date', models.DateTimeField(verbose_name='date published')),
            ],
        ),
        migrations.AddField(
            model_name='choice',
            name='question',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='polls.Question'),
        ),
    ]

一旦创建了迁移脚本,只需执行即可。

$ python manage.py migrate

在上述情况下,它将执行尚未执行的迁移脚本。

除此之外,还可以指定迁移脚本来确认会发出哪些SQL语句。

$ python manage.py sqlmigrate polls 0001

如果是0001文件,我认为可以确认CRATE文等内容。

从模型创建到迁移脚本的执行的流程

模型创建(每个应用的models.py)

将应用程序加载到项目中(mysite的settings.py的INSTALLED_APPS)

基于模型创建迁移脚本(makemigrations)

执行迁移脚本(migrate)

Django的设计哲学

Django应用程序是“可插拔”的。
应用程序不依赖于特定的Django项目,因此可以在多个项目中使用或单独分发应用程序。

Django管理员

在Django中,默认包含管理网站。
首先,需要创建一个可以登录管理网站的超级用户。

$ python manage.py createsuperuser

请以对话形式设置用户ID和密码。

一旦创建超级用户,我会尝试实际登录。

打开浏览器,访问本地域名localhost/admin/。

成功登录之后,将显示如下所示的管理界面。

スクリーンショット 2016-10-12 23.16.56.png

设置Polls应用程序在管理员上可编辑。

如果没有进行任何设置,管理员无法看到投票应用程序。
将修复投票应用程序,使其可以从管理员进行操作。

我将对polls的admin.py进行以下修改。

from django.contrib import admin

# Register your models here.

from .models import Question

admin.site.register(Question)

当你再次重新加载开发服务器时,

スクリーンショット 2016-10-12 23.21.20.png

我认为你会发现,POLLS已经被添加上去了。

现在,通过GUI操作可以对POLLS进行修正了。

总结

本次说明了模型的创建、迁移脚本的执行以及管理界面的使用方法。

这虽然是一集有点平淡的情节,但却是与后续视角操作密切相关的关键情节。

下一回,我计划解释一下如何创建自定义视图和使用模板文件。

GitHub -> GitHub

系列

    • Djangoを始めよう! 〜チュートリアル①〜

 

    • Djangoを始めよう! 〜チュートリアル②〜

 

    • Djangoを始めよう! 〜チュートリアル③〜

 

    • Djangoを始めよう! 〜チュートリアル④〜

 

    • Djangoを始めよう! 〜チュートリアル⑤〜

 

    Djangoを始めよう! 〜チュートリアル⑥〜
广告
将在 10 秒后关闭
bannerAds