django001#はじめの第一歩

# 初めに
今まで簡単なアプリケーションをずっとFlask使い続けたですが、djangoも勉強しようと思います。
できるだけわかりやすく一つのStepが小さくするようにメモを書きます。

# 流れ
1. インストール
2. 新規プロジェクト作成
3. Helloworldアプリケーション作成
4. project01とHelloworldアプリケーションのurls.pyを紐付け
5. Helloworldアプリケーションのurls.pyとviews.pyを紐付け
6. Helloworldアプリケーションのviews.pyをHTML返事追加
7. Helloworldサーバ起動

…見たいな感じかな。
実際は難しくないがStepことにはっきり書いておかないと来週の私がもうわけがわからなくなってしまう…
でははじめよう。

##　djangoインストール

難しくありません。それだけです。
https://docs.djangoproject.com/en/2.1/topics/install/

```pip install Django```

##　新規プロジェクト作成

django-adminコマンド使えばアプリケーションの操作とかいろいろ作れます。
このコマンドはなにがあるのかな～？Helpをみてみよう。

```django-admin -h```

まぁ…いろいろがありますね。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/154661/f561dc4c-2216-3659-1a8c-a878bacf38e7.png)

新規作りたいので、startprojectにします。

```django-admin -startproject project01```

Folderの構成はこうになりますね：
うんうん、いい感じです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/154661/373dbb46-2c19-a531-7198-5d37f543da93.png)

##　Helloworldアプリケーション作成

先Helpをみてたときstartappがみえます？これを使います！

```django-admin -startapp helloworld```

Folderの構成はここになります：
![image.png](https://qiita-image-store.s3.amazonaws.com/0/154661/5d81396b-5996-ca63-2d1c-de1f253a035a.png)

最初はわけわからないFilesが多いと思いますが、これから少しつつ進みます。
このStepまで、構成図はこうになります：
![image.png](https://qiita-image-store.s3.amazonaws.com/0/154661/7dab8cb0-7046-1701-d769-91aca5cc5cce.png)

## project01とHelloworldアプリケーションのurls.pyを紐付け

まずproject01の中にあるurls.pyをhelloworldのFolderに中にへCOPYします。

次は"project01"のurls.pyを開きます。
コメントもある程度の説明しますが、いまは紐つけたいのでIncluding another URLconf”します。
ううん、まずincludeとpathとImportし、そのあとurlpatternsのところで追加すればOKってこｔですね。

```
"""project01 URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('helloworld.urls'))#link
]
```
'helloworld.urls'は、つまりhelloworldsのFolderの中にあるurls.pyのことですね～

このStepまで、構成図はこうになります：
![image.png](https://qiita-image-store.s3.amazonaws.com/0/154661/a9143622-b195-8d68-8cdb-3286b00edbcb.png)


## Helloworldアプリケーションのurls.pyとviews.pyを紐付け

いまは”Helloworld”のurls.pyを開きます。
Function viewsを使います。
ううん、まずviews.pyをImportして、そのあとurlpatternsを追加するですね。

```
"""project01 URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('',views.homepage,name='homepage')
]
```
views.homepageはつまりviewsの中にあるhomepage functionですね～

このStepまで、構成図はこうになります：
![image.png](https://qiita-image-store.s3.amazonaws.com/0/154661/60e76ac7-9078-bbb0-8733-b4a203466e6a.png)


##　Helloworldアプリケーションのviews.pyをHTML返事追加

今度はviews.pyを編集します。紐付けが終わりましたが、homepage functionもviews.pyの中に入れないとurls.pyが参照
できるFunctionがないじゃないですか～なので：
まずはHttpResponseをImportし、homepage(req)を追加しHtml Codeを返事します。

```
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def homepage(req):
	print('hey, you req is {}. '.format(req))
	return HttpResponse('<h1>Hello World</h1>')
```

##　Helloworldサーバ起動

ここまでお疲れ様です！
最後じゃサーバーを立ち上げましょう。

```python manage.py runserver```

どうになるかな、どうになるかな。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/154661/94a1b157-790c-bdd1-4d66-6ea37a5bc2d6.png)
おおおお、行けそうですね。
じゃHttp://127.0.0.1:8000/にいってみよう。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/154661/8c83e683-e35f-42ac-34de-478860403585.png)

おめでとう！成功しました！

じゃ、最後はTerminalをもう一度みよう。
うんん、この時間でGETがもらえましたね～
![image.png](https://qiita-image-store.s3.amazonaws.com/0/154661/c60c0872-8e7a-620a-8053-af5b8b8506ea.png)