38
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Djangoでタスク管理アプリをつくりたい! 環境構築編

Last updated at Posted at 2018-11-06

はじめに

 タスク管理用のアプリは多数存在するが,欲しい機能を全て兼ね備えたものがなかなか見つからない。あったとしても,有料版などで手軽に手が出せない。なので,自分で作ってみようとなった。
 今回はPythonのフレームワークであるDjangoを使ってみる

導入したい機能

  1. ログイン
  2. アカウント登録
  3. タスク管理
  4. ガントチャート生成
  5. イナズマ線表示
  6. イナズマ線比較
  7. チャット
  8. アンケート

開発環境

・Windows10 professional 64bit
・Python 3.7.1
・Django 2.1.2
・MySQL 8.0.12

環境構築

プロジェクトの作成

プロジェクトを作成したいディレクトリで以下のコマンドを叩く
[taskMan]はプロジェクト名

PowerShell
> django-admin startproject taskMan

以下のプロジェクトが生成される

tree
taskMan
 |---taskMan
 | |---__init__.py
 | |---setting.py
 | |---urls.py
 | |---wsgi.py
 |
 |---manage.py

MySQLの設定

DjangoではデフォルトでSQLiteを使用しているのでMySQLを使用するように設定(setting.py)を変更する

setting.py
# Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DB名',
        'USER': 'user名',
        'PASSWORD': 'パスワード',
        'HOST': 'ホスト名',
        'PORT': 'ポート番号',
    }
}

次にPythonでMySQLが使用できるようにモジュールをインストールする

PowerShell
> python -m pip install PyMySQL

プロジェクト内でMySQLを使用することを宣言するために,manage.pyに追記する

manage.py
import pymysql
pymysql.install_as_MySQLdb()

MySQLの設定は完了

setting.pyをいっじたので,同時に表示言語を日本語にしてタイムゾーンも東京にする

setting.py
# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/

# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'ja'

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Tokyo'

カスタムユーザモデルの作成

ログイン認証などで使うユーザモデルは拡張性を考え,カスタムユーザモデルを使用したほうが良いとのことなので,デフォルトと同じカスタムユーザモデルを作成し使用する。
公式ドキュメント

・アプリケーションを作成する
manage.pyと同じディレクトリで以下のコマンドを叩く
[accounts]はアプリケーション名

PowerShell
> python manage.py startapp accounts

アプリケーションが生成され,以下の構成になる

tree
taskMan
 |---accounts
 | |---migrations
 | | |---__init__.py
 | |
 | |---__init__.py
 | |---admin.py
 | |---apps.py
 | |---models.py
 | |---tests.py
 | |---views.py
 |
 |---taskMan
 |---manage.py

作ったアプリケーションをDjangoに認識してもらうために,setting.pyを編集する

setting.py
# Application definition

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

・カスタムユーザモデルを作成する

models.py
from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    pass

AbstractUserを継承すると,デフォルトのUserに要素を追加できる
しかし今回は,デフォルトと同じものを作るのでpassとする

admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User

admin.site.register(User, UserAdmin)

カスタムユーザモデルをadminに追加する

このままではカスタムユーザが認証には使われないので,認証用にするためにsetting.pyに追加する

setting.py
AUTH_USER_MODEL = 'accounts.User'

サイト管理画面へログイン

作成したカスタムユーザモデルできちんとログインが認証されるか,確認するためにサイト管理画面へログインする

その前に,ログインするためにユーザを作成する
・manage.pyのあるディレクトリでコマンドを叩く

PowerShell
> python manage.py makemigrations
Migrations for 'accounts':
  accounts\migrations\0001_initial.py
    - Create model User

> python manage.py migrate
Apply all migrations: accounts, admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0001_initial... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying accounts.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying sessions.0001_initial... OK

DBにテーブルが作成された

次にsuperuserを作成する
(superuserはどのサイトも見ることができるユーザ)

PowerShell
> python manage.py createsuperuser
ユーザー名: admin
メールアドレス: admin@test.com
Password:
Password (again):
Superuser created successfully.

Superuser created successfully.と表示されれば成功
パスワードは見えないが,それが正常なので問題ない
また,パスワードが単純だった入りすると警告が出る

・ローカルサーバを起動する

PowerShell
> python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
November 06, 2018 - 12:55:05
Django version 2.1.2, using settings 'taskMan.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

http://localhost:8000にアクセスして
image.png

この画面が表示されたら無事起動

そこからhttp://localhost:8000/adminにアクセスし
image.png
先ほど登録したユーザ名とパスワードを使いログインする

image.png
この画面が表示されたならログイン成功
作成したユーザモデルが認証に使えることを確認できた。

今回のまとめ

Djangoは初めて使ってみたが,MVCモデルを意識したフレームワークだったのでわかりやすく,構成に悩むことは少なかった。しかし,Pythonの知識や個々のモジュールについては理解しきれていないところがあり,syntax errorが多々あったのでやりながら覚えていきたい。

今後は導入したい機能を一つずつ作りながら,アプリの完成を目指していく

シリーズ

・Djangoでタスク管理アプリをつくりたい! 環境構築編
Djangoでタスク管理アプリをつくりたい! ユーザ認証編
Djangoでタスク管理アプリをつくりたい! ユーザ情報編
Djangoでタスク管理アプリをつくりたい! プロジェクト管理編
Djangoでタスク管理アプリをつくりたい! タスク管理編1

38
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?