バックエンド

【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の勘所が簡潔にばっちり記載されていてとても良書です。

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

PS.

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

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

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

『Python』関連ではこんな記事も読まれています。

1. 【Python】手軽に試す方法2つとwebフレームワークについて【初心者向け】

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

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

4. 【Python】Flaskのチュートリアルがもっとわかるようになるまとめ【初心者向け】

5. 【Python】用語集まとめてみた。~Webサービスをつくりたい人向け~【初心者向け】※随時更新中

6. 【Python】でWebアプリをがっつりやるならDjango一択な4つの理由【初心者向け】

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

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

9. 【Python/Django】webフレームワークを使う6つのコツ〜最短距離でアプリをつくるために【初心者向け】

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

11. 【Django】【Laravel】【RubyOnRails】を比較してみた【初心者向け】【体験談】

 

アオキ
ツイッターでも記事ネタ含めちょろちょろ書いていくので、よろしければぜひフォローお願いしますm(_ _ )m

アオキのツイッターアカウント


関連記事一覧 (一部広告あり)

最近の記事

アーカイブ

  1. 生成AI

    Dify講座をリリースしました【非エンジニア向け】
  2. オンライン教材

    【AWS】【初心者向け】インフラの基礎からわかる講座をリリースしました【Udem…
  3. データベース

    MySQLの講座をリリースしました
  4. バックエンド

    【Laravel第4弾】Vue.js3(CompositionAPI+Scrip…
  5. 生成AI

    2024/5/14 OpenAI発表 まとめ
PAGE TOP
Ads Blocker Image Powered by Code Help Pro

広告ブロックを摘出しました!!

ブラウザ拡張を使用して広告をブロックしていることが摘出されました。

ブラウザの広告ブロッカーの機能を無効にするか、
当サイトのドメインをホワイトリストに追加し、「更新」をクリックして下さい。

あなたが広告をブロックする権利があるように、
当方も広告をブロックしている人にコンテンツを提供しない権利と自由があります。

Powered By
100% Free SEO Tools - Tool Kits PRO