Python[Django] de Webサービスを公開するまで [チュートリアル編・パート1]

## 実行環境

★ローカル環境
MacBook Pro (13-inch, Mid 2012)
プロセッサ: 2.5 GHz Intel Core i5
メモリ: 4 GB 1600 MHz DDR3
★使用予定言語
Python
Django
JavaScript

---

## インストール方法
インストールについて、ここで[紹介](http://qiita.com/jack-low@github/items/73b27d6805ae9d88b5a6)してます。

---

# チュートリアル
## □[Part1](https://docs.djangoproject.com/en/1.9/intro/tutorial01/)

インストール完了後、ターミナルにて、下記の順番にアプリのテンプレート作成からサーバー起動まで行います。

まずは、チュートリアルに沿って、Djangoのテンプレートを作成しましょう。
今回は、チュートリアルに合わせていますので、「mysite」としてますが、自分のプロジェクト名に合わせても問題ないです。
このチュートリアルの最終形は、投票アプリとなってます。
テンプレート作成からurl制御、cgi作成など含め、基礎的な部分が身につく形です。

## ポイント1
ターミナルに、下記の内容を入力します。

```lang:ターミナル
# mysiteを作成します。"mysite"はプロジェクト名でも大丈夫です。
# 変更した場合は、"mysite"部分をプロジェクト名で読み替え、進めてください。 
$ django-admin.py startproject mysite

# cdコマンドで、mysiteへ移動します。
$ cd mysite

# manage.pyを利用して、アプリ基盤を作成します。
$ python manage.py startapp polls
```

ここで参考用に、「polls」のtreeを展開しておきます。

```lang:polls[tree]
polls
  ├── __init__.py
  ├── admin.py
  ├── apps.py
  ├── migrations
  │   └── __init__.py
  ├── models.py
  ├── tests.py
  ├── urls.py  < 追加 & 編集
  └── views.py < 編集
```
まずは、pollsにあるviews.pyを編集します。
これは、いつもの「Hello, world.」です。

```lang:polls/views.py
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")
```

## ポイント2
次にpolls内で「urls.py」を新たに作り、追加します。
これは、views.pyで宣言している「def index(request):」で使用するもととなります。
正規表現でurlが管理されるので、セキュリティ面においても誤ったurlが入力された場合、エラーとして扱えるようになるでしょう。

ちなみに、views.py単体でもURL先を指定し、機能しますが、それでは管理が大変になる可能性があります。
常に「views.py」と「urls.py」は連動し、動くべき形がいいでしょう。

```lang:polls/urls.py
from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]
```

続いて、mysiteの現在のtreeです。
今度は、「mysite」内にある「urls.py」を開き、編集します。

```lang:mysite/polls[tree]
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py < コレ
│   └── wsgi.py
└── polls
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── models.py
    ├── tests.py
    ├── urls.py
    └── views.py
```

## ポイント3
「urls.py」の「urlpatterns」に「url(r'^polls/', include('polls.urls')),」を加えます。
この時、includeが「include(admin.site.urls)」となっている場合、あなたのversionが古い可能性があります。
その場合は、このチュートリアルを参照にしても無駄です。
古いバージョンのチュートリアルをやるか、新しいバージョンに切り替える必要があります。

```lang:mysite/urls.py
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls),
]
```

ターミナルに戻り、サーバーを起動します。
なお、外部接続(ローカル内)からでも確認が可能なように、「python manage.py runserver 0.0.0.0:8000」としています。
起動後は、外部端末から[http://localhost:8000/polls/](http://localhost:8000/polls/)に接続が可能です。
ブラウザに「Hello, world. You're at the polls index.」と表示されていることを確認してください。

```lang:ターミナル
# サーバー起動
$ python manage.py runserver 0.0.0.0:8000
> http://localhost:8000/polls/
> Quit the server with CONTROL-C.
```
---

以上、パート1の解説でした。
パート2では、DBの作成などが盛り込まれています。

---

# ポイントのおさらい。
□ポイント 1
　mysite内でpollsを作成し、さらにpolls内のwiews.pyを編集。

□ポイント 2
　先ほど、作ったpolls内にて、urls.pyを作成、編集します。

□ポイント 3
　また、mysite内のurls.py内も編集します。
　ただこの時、注意してほしいことがあります。
　もし、includeが「include(admin.site.urls)」となっている場合、あなたのversionが古い可能性があります。
　その時は、新しいversionにするか、古いversionのチュートリアルを参照してください。

□おまけポイント
　また、「settings.py」内の表記が「[]」ではなく、「()」で囲まれてた場合も古い可能性があります。
　詳しくは、次回のチュートリアルにて、詳細のコードも交え、説明予定。

---