LoginSignup
12
16

More than 5 years have passed since last update.

cookiecutter-djangoを使ってみた

Posted at

Pythonには cookiecutter という仕組みがあり、それを使ってみた際のメモです。
cookiecutterを使ってみる とまるかぶりの内容だけど自分用の備忘録。

どんな雛形がある?

cookiecutter の A Pantry Full of Cookiecutters とか Django Packages を見ると色々あります。
Django関連ではメジャーみたいなのとPythonやBootstrapの新しいバージョンに対応してるので cookiecutter-django を使ってみます。cookiecutter-django-crud とかも気になるけど、そちらははいずれ…

環境

cookiecutter-django が Python3.6、Django1.11 に対応となってるので、

  • Python は 3.6
  • Django は 1.11.8
  • OS は Windows 10
  • DB は PostgreSQL 10.1
  • IDE は普段使ってる PyDev (Eclipse)

やってみる

Creating your first app with Cookiecutter-Django に従う。
virtualenvでPython仮想環境を使う説明になってるけど、自分のローカルでは Anaconda の仮想環境を使ってるのでPython仮想環境の手順はskipしていきます。

cookiecutterをインストール

condaにないのでpipで。

> pip install "cookiecutter>=1.4.0"

Python用の PostgreSQLクライアントをインストール

> conda install psycopg2

プロジェクトフォルダを作成&移動

> mkdir cookiecutter_sample
> cd cookiecutter_sample

cookiecutter-django を適用

cookiecutter-django で cookiecutter を実行。

> cookiecutter https://github.com/pydanny/cookiecutter-django

下のように色々聞かれますが、お試しなので project_name と author_name ぐらい変更してenterキーを連打します。
自分はwinなので Windows だけ y に。

project_name [Project Name]: cookiecutter_sample
project_slug [cookiecutter_sample]:
author_name [Daniel Roy Greenfeld]: ping2shi2
email [you@example.com]:
description [A short description of the project.]:
domain_name [example.com]:
version [0.1.0]:
timezone [UTC]: Asia/Tokyo
use_whitenoise [y]:
use_celery [n]:
use_mailhog [n]:
use_sentry_for_error_reporting [y]:
use_opbeat [n]:
use_pycharm [n]:
windows [n]: y
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 - Gulp
2 - Grunt
3 - None
Choose from 1, 2, 3 [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]:

すると mkdirした cookiecutter_sampleフォルダの下に、更に cookiecutter_sampleフォルダが作成され、中身は以下のとおり。

D:.
│  .coveragerc
│  .editorconfig
│  .gitattributes
│  .gitignore
│  .pylintrc
│  .travis.yml
│  CONTRIBUTORS.txt
│  env.example
│  gulpfile.js
│  LICENSE
│  manage.py
│  package.json
│  pytest.ini
│  README.rst
│  setup.cfg
│  
├─config
│  │  urls.py
│  │  wsgi.py
│  │  __init__.py
│  │  
│  └─settings
│          base.py
│          local.py
│          production.py
│          test.py
│          __init__.py
│          
├─cookiecutter_sample
│  │  __init__.py
│  │  
│  ├─contrib
│  │  │  __init__.py
│  │  │  
│  │  └─sites
│  │      │  __init__.py
│  │      │  
│  │      └─migrations
│  │              0001_initial.py
│  │              0002_alter_domain_unique.py
│  │              0003_set_site_domain_and_name.py
│  │              __init__.py
│  │              
│  ├─static
│  │  ├─css
│  │  │      project.css
│  │  │      
│  │  ├─fonts
│  │  │      .gitkeep
│  │  │      
│  │  ├─images
│  │  │      favicon.ico
│  │  │      
│  │  ├─js
│  │  │      project.js
│  │  │      
│  │  └─sass
│  │          custom_bootstrap_vars.scss
│  │          project.scss
│  │          
│  ├─templates
│  │  │  403_csrf.html
│  │  │  404.html
│  │  │  500.html
│  │  │  base.html
│  │  │  
│  │  ├─account
│  │  │      account_inactive.html
│  │  │      base.html
│  │  │      email.html
│  │  │      email_confirm.html
│  │  │      login.html
│  │  │      logout.html
│  │  │      password_change.html
│  │  │      password_reset.html
│  │  │      password_reset_done.html
│  │  │      password_reset_from_key.html
│  │  │      password_reset_from_key_done.html
│  │  │      password_set.html
│  │  │      signup.html
│  │  │      signup_closed.html
│  │  │      verification_sent.html
│  │  │      verified_email_required.html
│  │  │      
│  │  ├─bootstrap4
│  │  │  │  field.html
│  │  │  │  
│  │  │  └─layout
│  │  │          field_errors_block.html
│  │  │          
│  │  ├─pages
│  │  │      about.html
│  │  │      home.html
│  │  │      
│  │  └─users
│  │          user_detail.html
│  │          user_form.html
│  │          user_list.html
│  │          
│  └─users
│      │  adapters.py
│      │  admin.py
│      │  apps.py
│      │  models.py
│      │  urls.py
│      │  views.py
│      │  __init__.py
│      │  
│      ├─migrations
│      │      0001_initial.py
│      │      __init__.py
│      │      
│      └─tests
│              factories.py
│              test_admin.py
│              test_models.py
│              test_urls.py
│              test_views.py
│              __init__.py
│              
├─docs
│      conf.py
│      deploy.rst
│      docker_ec2.rst
│      index.rst
│      install.rst
│      make.bat
│      Makefile
│      __init__.py
│      
├─requirements
│      base.txt
│      local.txt
│      production.txt
│      test.txt
│      
└─utility
        install_os_dependencies.sh
        install_python_dependencies.sh
        requirements-jessie.apt
        requirements-trusty.apt
        requirements-xenial.apt

cookiecutter_sampleフォルダが1階層余分に見えます。手動で1つ減らして進めると後で失敗するので、このまま Pydev へ。

Pydev プロジェクトを作成

Eclipseで ファイル>新規>その他 のメニューを選択し、Pydev Django プロジェクトを選択。

[次へ] ボタンクリックして [プロジェクト名] に 上で作成したプロジェクト名を入力して[次へ]をクリック。

新規PydevDjangoPJ_2.png

その後は環境に合わせて入力してから[完了]クリックします。
すると、先ほど \cookiecutter_sample\cookiecutter_sample\ 配下に出来たファイルが \cookiecutter_sample\ 配下に移動してくれます。
自分で移動すると、雛形のコードと構成がずれて動かなくなるので注意です。

DBの接続情報を設定

当然ですが事前に CREATE DATABASE はしておいて下さい。
プロジェクト直下の env.example というファイルにDBの接続情報を追加します。

DATABASE_URL="postgres://user:pass@127.0.0.1:port_no/db_name"

env.example のファイル名 を .env に変更します。
.env は環境変数を設定できるファイルみたいです。

.envファイル を有効に

.envファイルを有効にするため、
config\settings\base.py を以下のように修正します。

# READ_DOT_ENV_FILE = env.bool('DJANGO_READ_DOT_ENV_FILE', default=False)
READ_DOT_ENV_FILE = env.bool('DJANGO_READ_DOT_ENV_FILE', default=True)

Django settings module を Pydev に設定

プロジェクトのプロパティを開いて Pydev で起動する際の Django settings module に config.settings.local を設定します。

新規PydevDjangoPJ_3.png

Djangoのマイグレーションを実行

コマンドでも良いですが Pydev から実行する場合は、プロジェクトを選択して右クリック>Django>マイグレーション をクリック

Django Migration.png

起動

Eclipseでデバッグ起動してブラウザでアクセスすると

起動画面.png

サインアップ.png

のように、サインアップ、ログイン、ログアウト、パスワード変更、などユーザーアカウントまわりの機能は出来ています。
また、設定時にenter連打した環境まわりをちゃんと設定すると、そちらも自動的に出来るようです。
これにビジネスロジックだけ追加しよう。ということです。

おしまい。

12
16
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
12
16