Django入門にはDjango Girls Tutorialがおすすめ

## Django Girls Tutorial
Djangoのチュートリアルをいろいろ探してみた結果、「Django Girls Tutorial」がとても良心的に感じました。
Web開発の経験がない人でも一人で進められるのではと思うほどの丁寧さでした。

- [英語版](http://tutorial.djangogirls.org/en)
- [日本語版](https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/content/how_the_internet_works/index.html)
- よかったところ
	- 基本的な部分だけシンプルにさらうことができる
	- deprecatedな部分がなさそう
	- 数時間でおわる
	- ほとんどの用語に丁寧な説明がある
- チュートリアルの概要
    
    - Django以前の背景知識
        - Internetとは
        - Comannd lineとは
        - Pythonとは
    - Djangoのインストール
    - プロジェクト、アプリケーション立ち上げ
    - DB,モデル,ORMについて
    -  Django URLs,Viewについて
    -  Herokuデプロイ
    -  など

これをやった後、本家のチュートリアルや他のサイトで勉強するとスムーズかなと思いました。
コードは[ここ](https://github.com/andrew/django-girls-tutorial)とかに上がっていて安心。

## その他のDjangoチュートリアルまとめ

* http://qiita.com/kaki_k/items/511611cadac1d0c69c54
	* IDEとかBootstrapまで丁寧に説明されていて書籍管理サイトを作成するチュートリアル
* https://docs.djangoproject.com/en/1.10/intro/tutorial01/
    * 本家のチュートリアル(英語)
* http://www.tutorialspoint.com/django/django_environment.htm
    * セッションやキャッシュなど網羅範囲が広いチュートリアル(英語)
* https://realpython.com/learn/start-django/
    * チュートリアルというよりかはセットアップ方法かも

## チュートリアルのおおまかな流れ
これ以降はチュートリアルに沿ってやったことや参考にしたURLの備忘録。(大幅にはしょってますが)

* 環境とバージョン
    * OS:OS X
    * Python:3.5
    * Django:1.10

## [Djangoのセットアップ](http://tutorial.djangogirls.org/en/django_installation/)
virtualenvで仮想環境の構築と実行

```console
$python3 -m venv myvenv
$source myvenv/bin/activate
```
Djangoのインストール

```console
$pip install django~=1.10
```

[プロジェクト作成](http://tutorial.djangogirls.org/en/django_start_project/#your-first-django-project)(mysiteプロジェクト)

```console
$ django-admin.py startproject mysite
```

いろいろファイルが作成される。
`mysite/settings.py`でルートディレクトリと利用するDBを設定して、migrateする

``` console
$ python manage.py migrate
```

## [アプリケーションとモデル作成](http://tutorial.djangogirls.org/en/django_models/)
Djangoでは、一つのプロジェクトが複数のアプリケーションで構成されるらしい。
以下のコマンドでmysiteプロジェクト以下にblogアプリケーションのフォルダとファイルが作成される。

```console
$ python manage.py startapp blog
```


`mysite/settings.py`でアプリケーションを追加したことを定義し、`blog/models.py`でauthor,title,textなどをもつPostモデルを定義

作成したモデルをDBに反映

```console
$ python manage.py makemigrations blog
$ python manage.py migrate blog
```

ローカルでのサーバー立ち上げをすると` http://127.0.0.1:8000/admin`でアクセスが可能に

```console
$ python manage.py runserver
```

## [Admin](http://tutorial.djangogirls.org/en/django_admin/)

`blog/admin.py`を編集しモデルをAdminページで管理可能にする。
以下のコマンドsuperuserが作成できる。migrateも忘れずに

``` console
$ python manage.py createsuperuser
$ python manage.py migrate blog
```



## [herokuデプロイ](https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/content/deploy/index.html)
Heroku利用に必要なライブラリのインストールや依存関係の宣言など

* 参考
	* https://devcenter.heroku.com/articles/getting-started-with-python#declare-app-dependencies
	* https://devcenter.heroku.com/articles/python-support
	* https://devcenter.heroku.com/articles/python-runtimes

``` console
$ pip install dj-database-url gunicorn whitenoise
$ echo 'psycopg2==2.5.4' >> requirements.txt
$ echo 'web: gunicorn mysite.wsgi' > Procfile
$ echo python-3.5.2 >runtime.txt
```


以下のファイルを編集してからgit init/add/commit 

* mysite/local_settings.py
* mysite/settings.py
* mysite/wsgi.py


そのあとは、Herokuに登録してpushして、migrateとsuperuserの設定してできあがり！

``` console
$ heroku create HEROKU-APP-NAME 
$ git push heroku master
$ heroku run python manage.py migrate
$ heroku run python manage.py createsuperuser
```


`Cannot run more than 1 Free size dynos.`とかいうエラーでたら、他のコンソールでのherokuアクセスしてることに怒られてるから、他のコンソールでのアクセスを終了させる([解説](http://stackoverflow.com/questions/34727605/heroku-cannot-run-more-than-1-free-size-dynos))

## 最後に
一応[GitHub](https://github.com/takechanman1228/django-tutorial)にあげました。