开始学习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/。
成功登录之后,将显示如下所示的管理界面。
设置Polls应用程序在管理员上可编辑。
如果没有进行任何设置,管理员无法看到投票应用程序。
将修复投票应用程序,使其可以从管理员进行操作。
我将对polls的admin.py进行以下修改。
from django.contrib import admin
# Register your models here.
from .models import Question
admin.site.register(Question)
当你再次重新加载开发服务器时,
我认为你会发现,POLLS已经被添加上去了。
现在,通过GUI操作可以对POLLS进行修正了。
总结
本次说明了模型的创建、迁移脚本的执行以及管理界面的使用方法。
这虽然是一集有点平淡的情节,但却是与后续视角操作密切相关的关键情节。
下一回,我计划解释一下如何创建自定义视图和使用模板文件。
GitHub -> GitHub
系列
-
- Djangoを始めよう! 〜チュートリアル①〜
-
- Djangoを始めよう! 〜チュートリアル②〜
-
- Djangoを始めよう! 〜チュートリアル③〜
-
- Djangoを始めよう! 〜チュートリアル④〜
-
- Djangoを始めよう! 〜チュートリアル⑤〜
- Djangoを始めよう! 〜チュートリアル⑥〜