LoginSignup
5
3

More than 5 years have passed since last update.

[Python]とにかくわかりやすく!Djangoでアプリ開発!ーその8(最終)ー

Last updated at Posted at 2019-03-10

前回の記事

[Python]とにかくわかりやすく!Djangoでアプリ開発!ーその7ー

本記事の目的

python初心者の方が、本記事を見たあとに、一人でアプリ開発できることを目的にしております。
※インストールや開発環境については記載しません

環境

macOSX Sierra
python3.7
django 2.1.5

前回まで

だいぶ長くなってきたので、どのようなことをやってきたか詳細を割愛しますが、たくさんのことをしてきました。
フロントの話やDBの話はまだまだありますが、最低限の機能がついたものとして、公開をしてみたいと思います。
※今回herokuを使いますので事前にherokuのアカウント発行まではしておいてください。

絶対に必要なものをインストール

ここら辺はpipで用意します。

$ pip install dj-database-url gunicorn whitenoise

requirements.txtの用意

requirements.txtを用意して、書き込みを行います。

$ pip freeze > requirements.txt

中身はこんな感じです。

requirements.txt
dj-database-url==0.5.0
Django==2.1.5
django-contrib-comments==1.8.0
gunicorn==19.9.0
psycopg2==2.7.5
whitenoise==4.0

そのほか必要なファイルの用意

Procfileとruntime.txtとlocal_setting.pyを用意しておきます。

web: gunicorn myapp.wsgi
runtime.txt
python-3.6.6
local_setting.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))


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

DEBUG = True

最終的なtreeはこんな感じ

myapp
├── Procfile #ここ
├── db.sqlite3
├── app1
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── forms.py
│   ├── migrations
│   │   ├── 000x_auto_20190308_2248.py
│   │   └── __init__.py
│   ├── model.txt
│   ├── models.py
│   ├── static
│   │   └── kenko
│   │       └── css
│   │           └── style.css
│   ├── templates
│   │   └── kenko
│   │       ├── create.html
│   │       ├── delete.html
│   │       ├── edit.html
│   │       ├── find.html
│   │       └── index.html
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── manage.py
├── myapp
│   ├── __init__.py
│   ├── local_settings.py #ここ
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── requirements.txt #ここ
└── runtime.txt #ここ

settings.pyの修正

settings.pyの最後に以下を追加

settings.py
import dj_database_url
DATABASES['default'] = dj_database_url.config()

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO','https')

ALLOWED_HOSTS = ['*']

STATIC_ROOT = 'staticfiles'

DEBUG = True

try:
    from .local_settings import *
except ImportError:
    pass

STATIC_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

herokuに送る

一応

$ git init

ログインしてアプリを作ります。

$ heroku login
$ heroku create アプリ名

remoteで接続します。

$ git remote add heroku https://git.heroku.com/アプリ名.git

あとはこんな感じで

$ git add -A
$ git commit -m "commit"
$ git push heroku master

https://<< herokuに登録したアプリ名>>.herokuapp.com
にアクセスしたらアプリは自分のPC以外からも見れるようになっています。

補足

デプロイ後にcssが読み込まれなかったので
最後のwhitenoiseを追加したら解決。当然修正のたびにherokuにpushが必要です。

settings.py
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
]

参照

macでheroku deploy

最後に

約1ヶ月程度をかけてその8まで投稿しました。再度勉強し直したところもありました。
誤字脱字の修正はこれから行います。
本当はバリデーションのこととかDBのこととかまだまだまだまだ内容はありますが、一旦ここで終わりにして、また余裕ができたときに追加をしていきます。
ここまで全部みられたかたがどこまでいらっしゃるかわかりませんが、ありがとうございます。

5
3
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
5
3