使用Django来创建Todo应用程序,通过Docker构建环境
首先
我使用Django制作了一个代表性的Todo应用程序,并尽可能详细和细致地书写了代码的含义。
如果有任何错误,请指正!
目标人员
希望学习Django的人
所有的文章列表
用Django创建Todo应用程序 ① 使用Docker搭建环境
用Django创建Todo应用程序 ② 创建文件夹列表页面
用Django创建Todo应用程序 ③ 创建任务列表页面
用Django创建Todo应用程序 ④ 实现文件夹和任务的创建功能
用Django创建Todo应用程序 ⑤ 创建任务编辑功能
完工图

功能清单
-
- タスク作成機能
-
- タスク編集機能
-
- タスク一覧表示
-
- フォルダ作成機能
- フォルダ一覧表示
大致可以将功能分成以下几类!那么,我们开始制作吧!
使用Docker构建开发环境。
我们将创建以下目录结构。
django_todo
├── docker-compose.yml
├── dockerfile
├── manage.py
├── requirements.txt
└── django_todo
├── __init__.py
├── __pycache__
│ ├── __init__.cpython-38.pyc
│ ├── settings.cpython-38.pyc
│ ├── urls.cpython-38.pyc
│ └── wsgi.cpython-38.pyc
├── settings.py
├── urls.py
└── wsgi.py
1. 创建工作目录
$ mkdir django_todo
$ cd django_todo
在django_todo目录下创建Dockerfile、docker-compose.yml和requirements.txt文件。
$ touch Dockerfile docker-compose.yml requirements.txt
3. Dockerfile
将Dockerfile,docker-compose.yml和requirements.txt文件中如下所示进行编写。
# ベースとなるイメージを指定
FROM python:3
# バッファにデータを保持しない設定(1でなくても任意の文字でいい)
ENV PYTHONUNBUFFERED 1
# コンテナの中にディレクトリを作成
RUN mkdir /code
# 作業ディレクトリを指定
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
# ymlファイルのバージョン指定
version: '3'
# コンテナを定義
services:
web:
# Dockerfileをビルド
build: .
command: python3 manage.py runserver 0.0.0.0:8000
# マウント場所の指定
volumes:
- .:/code
ports:
- "8000:8000"
# dbサービスが立ち上がってから起動するように指定
depends_on:
- db
db:
image: postgres
ports:
- "5432"
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
Django>=2.0,<3.0
psycopg2>=2.7,<3.0
通过编写requirements.txt文件,您可以指定要安装的软件包及其特定版本。
创建Django项目
$ docker-compose run web django-admin.py startproject django_todo .
这是针对Compose的指令,告诉容器在内部执行django-admin.py startproject django_todo。
这将导致目录结构如下。
django_todo
├── Dockerfile
├── django_todo
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── docker-compose.yml
├── manage.py
└── requirements.txt
5. 数据库设置
使用postgresql作为数据库。
为了设置数据库,我们将编辑django_todo/setting.py文件。
将DATABASES和ALLOWED_HOSTS更改为以下内容。
ALLOWED_HOSTS = ['localhost']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
使用以下命令进行图像构建,容器构建和启动。
$ docker-compose up --build

数据库的配置
$ docker-compose run web python3 manage.py migrate
执行此命令将进行如下迁移。

创建一个新的应用程序。
执行以下命令以创建应用程序。
$ docker-compose run web python3 manage.py startapp todo
运行后的目录结构如下所示。
django_todo
├── Dockerfile
├── django_todo
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-38.pyc
│ │ ├── settings.cpython-38.pyc
│ │ ├── urls.cpython-38.pyc
│ │ └── wsgi.cpython-38.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── docker-compose.yml
├── manage.py
├── requirements.txt
└── todo
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
当你创建了一个应用程序后,你需要告诉Django使用它。为此,要将”todo”添加到django_todo/settings.py的INSTALLED_APPS中。因此,settings.py将如下所示。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'todo',
]
另外,我们还需要在这里设置时区、语言和静态文件路径,如下所示。
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
最后
环境搭建已经完成!上述代码在存储库的chapter1分支中。
在下一章中,我们将实现文件夹列表显示!
在Django中创建Todo应用程序的第2章,创建文件夹列表页面。
所有的文章列表
用Django创建Todo应用程序①使用Docker构建环境
用Django创建Todo应用程序②创建文件夹列表页面
用Django创建Todo应用程序③创建任务列表页面
用Django创建Todo应用程序④实现文件夹和任务创建功能
用Django创建Todo应用程序⑤创建任务编辑功能