Python

【Python/Django】Webアプリのテンプレートなら『cookiecutter』がよさげ【簡単で安心】

アオキ
Pythonで本格的なWebアプリを作りたい!
アオキ
しかもできるだけ手っ取り早くっ!

っとなったとしたら、

Pythonの全部入りwebフレームワーク『Django(ジャンゴ)』の出番かなと思うんですが、

いざ実際に世にリリースしようと思ったら、いろいろと考える事がでてきます。

特に問題なのが、

  • データベースなどのパスワード
  • APIのアクセスキー
  • セキュリティ全般

などなど。

自分のパソコンでテストとして動かす時と、サーバーで動かす時では

データベースの接続先が変わったりして、

そのたびに設定を書き換えていると手間もかかるしミスする可能性もあるし・・

また、セキュリティは本番環境ではマストなので、

(もし情報漏洩だったりSQLで情報上書きされたりしたらエラい事になるので)

  • 『Django』で開発ができて
  • 実際に本番環境にも使えて
  • セキュリティばっちりで
  • しかもお手軽

という夢のようなテンプレートがあればなぁと思っていたら、

あったんです。

えぇ。

最初に知った時は

アオキ
マジですか。

と思っちゃったけれど、

マジだったんです。

その名も、

『cookie-cutter』(クッキーカッター)。

こりゃ早速試してみるべ。

と試してみる事にしました。

実施環境は macOS High Sierra 10.13.8 です。
python3.6.4インストール済みです。(pipとvenvを標準で使えるバージョンです)

Sponsored link

【Python/Django】Webアプリのテンプレート『cookie-cutter』をインストールしてみる

まずはインストールするフォルダをつくって、

mkdir django_test #フォルダをつくる
cd django_test #フォルダに入る

Pythonアプリつくるならお約束の仮想環境を作って、
(Anacondaで仮想環境作成済みならスルーでOK)

python -m venv venv #venvというツールを使って仮想環境をつくる
source venv/bin/activate #仮想環境を有効にする
> (venv)

準備OK。

アオキ
いざ 『cookiecutter』をインストール・・!

pip install cookiecutter #cookie-cutterをインストール
cookiecutter https://github.com/pydanny/cookiecutter-django

しばらくすると、こんなメッセージが順番に表示されます。

project_name [Project Name]:
project_slug [cookiecutter_sample]:
author_name [Daniel Roy Greenfeld]:
email [you@example.com]:
description [A short description of the project.]:
domain_name [example.com]:
version [0.1.0]:
timezone [UTC]:
use_whitenoise [y]:
use_celery [n]:
use_mailhog [n]:
use_sentry_for_error_reporting [y]:
use_opbeat [n]:
use_pycharm [n]:
windows [n]:
use_docker [n]:
use_heroku [n]:
use_elasticbeanstalk_experimental [n]:
use_compressor [n]:
Select postgresql_version:
1 – 10
2 – 9.6
3 – 9.5
4 – 9.4
5 – 9.3
6 – 9.2
Choose from 1, 2, 3, 4, 5, 6 [1]:
Select js_task_runner:
1 – None
2 – Gulp
Choose from 1, 2 [1]:
custom_bootstrap_compilation [n]:
Select open_source_license:
1 – MIT
2 – BSD
3 – GPLv3
4 – Apache Software License 2.0
5 – Not open source
Choose from 1, 2, 3, 4, 5 [1]:
use_heroku[n]:

基本的にエンターでOK、windowsならwindowsの箇所をyにして、
heroku 使うならherokuもyにすればいいかなと思います。

あっさりとインストールが終わり、作成されたフォルダの中にはたっぷりのフォルダ群が。

.

├── CONTRIBUTORS.txt
├── LICENSE
├── Procfile
├── README.rst
├── config
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│   │   ├── urls.cpython-36.pyc
│   │   └── wsgi.cpython-36.pyc
│   ├── settings
│   │   ├── __init__.py
│   │   ├── __pycache__
│   │   ├── base.py
│   │   ├── local.py
│   │   ├── production.py
│   │   └── test.py
│   ├── urls.py
│   └── wsgi.py
├── docs
│   ├── Makefile
│   ├── __init__.py
│   ├── conf.py
│   ├── deploy.rst
│   ├── docker_ec2.rst
│   ├── index.rst
│   ├── install.rst
│   └── make.bat
├── locale
│   └── README.rst
├── manage.py
├── merge_production_dotenvs_in_dotenv.py
├── newbook
│   ├── __init__.py
│   ├── __pycache__
│   │   └── __init__.cpython-36.pyc
│   ├── conftest.py
│   ├── contrib
│   │   ├── __init__.py
│   │   ├── __pycache__
│   │   └── sites
│   ├── static
│   │   ├── css
│   │   ├── fonts
│   │   ├── images
│   │   ├── js
│   │   └── sass
│   ├── templates
│   │   ├── 403_csrf.html
│   │   ├── 404.html
│   │   ├── 500.html
│   │   ├── account
│   │   ├── base.html
│   │   ├── pages
│   │   └── users
│   └── users
│   ├── __init__.py
│   ├── __pycache__
│   ├── adapters.py
│   ├── admin.py
│   ├── apps.py
│   ├── forms.py
│   ├── migrations
│   ├── models.py
│   ├── tests
│   ├── urls.py
│   └── views.py
├── pytest.ini
├── requirements
│   ├── base.txt
│   ├── local.txt
│   └── production.txt
├── requirements.txt
├── runtime.txt
├── setup.cfg
├── tree.txt
└── utility
├── install_os_dependencies.sh
├── install_python_dependencies.sh
├── requirements-jessie.apt
├── requirements-stretch.apt
├── requirements-trusty.apt
└── requirements-xenial.apt

開発環境と本番環境で分けてたり、
後々必要であろう機能やフォルダ分けがあらかじめ用意されているよう。

さぁ早速動かしてみるかとおもむろに開発サーバーを立ち上げる魔法のコマンド、

python manage.py runserver

をやってみると、案の定エラー発生。

アオキ
動かないやんけー

よくよくエラーを見ると、『Module Not Found “***”』と書いてあって、

ライブラリをいくつかインストールする必要があるようです。

Sponsored link

【Python/Django】Webアプリテンプレート『cookie-cutter』で必要なライブラリ群

エラーを見て書いてあるライブラリをインストール。
そして python manage.py runserverとやるとまた違うエラーが発生。
またエラーの中身を見てライブラリをインストール、

というループを何度か繰り返して、これらのライブラリをインストールしました。

pip install django-environ #環境変数管理 秘密にしたいkeyなどを隠すため
pip install django-crispy-forms #いい感じにフォームをつくれるよう
pip install django-allauth #ソーシャルログイン機能
pip install django-rest_framework #APIやるなら必須
pip install django-debug_toolbar #開発やるなら必須
pip install django-extensions #djangoをいろいろと拡張してくれるらしい
pip install django[argon2] #ログイン時のパスワード暗号化と思われる

アオキ
今度こそ・・!

あらためて魔法のコマンド・・!

python manage.py runserver

またエラー。

次は psycopg2 (postgresqlを使うためのライブラリ)がないと。

アオキ
お、おう。。

『cookiecutter』はPostgresqlを使う設定になっているようで。

あらためて

pip install psycopg2 #postgresqlを使うためのライブラリ

でインストールして再度魔法の

python manage.py runserver

とするとさらに別のエラー。

django.db.utils.OperationalError: FATAL: database “newbook” does not exist

データベースがないと。

アオキ
作ってといてもらってもええやんけー。

と思いつつ、

createdb

でデータベースをつくって、

アオキ
今度こそ・・!

魔法の・・!
python manage.py runserver

アオキ
う、動いた―・・!

疲れたけれどちょっとした達成感あり。

エラーの内容が少しずつ変わってくると、前に進んでる感がしていいですよね。(エンジニアあるある)

参考図書

coocie-cutterはこの本で知りました。

Djangoの勘所が簡潔にばっちり記載されていてとても良書です。

ジャンゴガールズの次はこの本で決まり!

created by Rinker
¥1,728 (2019/05/26 00:22:23時点 Amazon調べ-詳細)

PS.

macでは動いたけれどwindows7ではpostgresqlの接続がうまくいかずエラーばかり。

最近は開発環境を整えるだけでも一苦労しますよね。

だからこそなおさらプロジェクトのテンプレートがあるのはとても助かりますね。

Sponsored link

関連記事

  1. Python

    スクラッチ(scratch)とマインクラフト(minecraft)を連携させて子ども向けプログラミン…

    CoderDojo熊本を立ち上げてからというもの、日々お勉強の毎日にな…

  2. Python

    【Django】Webアプリのフォルダ構成のアイデア〜違うアプリで同じテーブルを使いたい!

    とある業界の予約システムをつくることになりまして、ログイン周りとラ…

  3. Python

    【Python/Django】mysqlとの接続があまりにあっさりしすぎて拍子抜けした話

    DjangoからPostgresqlがどうしてもwin7だと接続できな…

  4. HTML/CSS

    パソコンでホームページをつくる5つの方法とサーバー4種類をまとめてみました【初心者向け】

    子供向け無料プログラミング寺子屋『CoderDojo熊本』第1回のアン…

  5. Python

    Python(パイソン)でホームページをつくった時の話【Flask/Vagrant/Heroku】

    子ども向けプログラミング寺子屋『CoderDojo熊本』第1回目に来て…

  6. Python

    Python(パイソン)でできる事の実例 じゃらんや楽天トラベルからデータをとってゴニョゴニョできち…

    子ども向け無料プログラミング寺子屋『CoderDojo熊本』に参加され…

Sponsored link

最近の記事

Sponsored link
  1. MySQL

    検索システムのデータベースの作り方や考え方を8ステップで書き連ねてみる
  2. docker初心者向けdocker-composeからやったほうがいいかもよ

    ツール

    【Docker】初心者はdocker-composeから始めた方がいいかもしれな…
  3. Laravel

    【Django】【Laravel】【RubyOnRails】を比較してみた【初心…
  4. 検索システム

    【検索システム】をつくってみた【実際にログインしてさわれます】
  5. クリエイティブコーディング

    プログラミングと三角関数〜小学生でもすんなりわかる三角関数を目指して
PAGE TOP