使用Django来创建Todo应用程序,通过Docker构建环境

首先

我使用Django制作了一个代表性的Todo应用程序,并尽可能详细和细致地书写了代码的含义。

如果有任何错误,请指正!

目标人员

希望学习Django的人

所有的文章列表

用Django创建Todo应用程序 ① 使用Docker搭建环境
用Django创建Todo应用程序 ② 创建文件夹列表页面
用Django创建Todo应用程序 ③ 创建任务列表页面
用Django创建Todo应用程序 ④ 实现文件夹和任务的创建功能
用Django创建Todo应用程序 ⑤ 创建任务编辑功能

完工图

タスク編集ページ.png

功能清单

    • タスク作成機能

 

    • タスク編集機能

 

    • タスク一覧表示

 

    • フォルダ作成機能

 

    フォルダ一覧表示

大致可以将功能分成以下几类!那么,我们开始制作吧!

使用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
Screenshot from 2020-03-16 17-36-49.png

数据库的配置

$ docker-compose run web python3 manage.py migrate

执行此命令将进行如下迁移。

Screenshot from 2020-04-16 23-17-22.png

创建一个新的应用程序。

执行以下命令以创建应用程序。

$ 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应用程序⑤创建任务编辑功能

bannerAds