最速！ Djangoアプリ作成手順 ~データモデルなしの場合~

この記事は次のような読者を想定して作成しました。

- Pythonはある程度使える
- Django初心者
- これからDjangoアプリを作ってみたい人

####作業環境

- OS Windows 10
- ブラウザ Google Chrome
- プログラミング言語　Python
- 開発フレーム　Django
- 使用ターミナル コマンドプロンプト
- テキストエディタ ATOM

動画も作ってみました
[![](https://img.youtube.com/vi/XDYyb1PdRCk/0.jpg)](https://www.youtube.com/watch?v=XDYyb1PdRCk)


#プロジェクトを作成する
プロジェクトを作成したいフォルダ内、仮に「test」フォルダとする、でコマンドラインを開き（[コマンドを素早く開く方法もご参考に][link]）、以下のコマンドを入力する。
[link]:https://qiita.com/Wanicosan/items/b9380a26af3caa7d7518

```:test
django-admin startproject testproject
```
すると```testproject```というフォルダが作成される。

#アプリを作成する
```testproject``` フォルダ内に移動し、


```:test
cd testproject
```

以下のコマンドを入力してアプリを作成する。

```:testproject
python manage.py startapp test 
```
フォルダを確認すると```testapp```というフォルダ（以下、アプリフォルダ）が作成されている。

#アプリを登録する

```testproject``` フォルダ内の```testproject``` フォルダ（プロジェクトを管理するフォルダ:以下管理フォルダと呼ぶ）にある、```settings.py``` を開く。
中段に「INSTALLED_APPS」というリストがあるので、リスト内に作成したアプリを追加する。


```python:testproject\testproject\settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles', #＜＝カンマを忘れずに
    'testapp',　#作成したアプリを記入する
]
```

#データモデルを移行する
Djangoにもともと登録されているデータモデルをデータベースに移行する。コマンドラインで以下を入力してデータモデルをデータベースに移行する。この時、同時にデータベースの ```db.sqlite3``` がルートフォルダ内に作成される。

```python:testproject
python manage.py migrate
```

#スーパーユーザーを作成する

```cmd:testproject
python manage.py createsuperuser
```

以下のメッセージが表示されるのでそれぞれ入力する。

```cmd:testproject
Username(leave blank to use 'user'):　#登録したいユーザー名
Email address:　#登録したいメールアドレス
Password:　#登録したいパスワード
Password(again):
```

これで管理者画面にログインできる準備が整った。いざ、ログイン！

#管理者画面を確認してみる
__この作業はスキップしてもいいが、工程の要所要所でアウトプットを確認して進めることが大事__

以下を入力しサーバーを立ち上げる。

```cmd:testproject
python manage.py runserver
```

ブラウザを開き、アドレスバーにローカルサーバーのアドレ ```127.0.0.1:8000``` を入力する。以下の画面が表示されていたらサーバーへのデプロイ成功。
![スクリーンショット 2019-07-05 17.54.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452364/3b0adf0a-c066-c3af-7fbf-1aa8b8d4e1c9.png)


アドレスバーに移動し、アドレスの最後に```/admin``` を入力し、移動する（ ```127.0.0.1:8000/admin```　）

以下のログインが画面が表示されたら、先ほど登録した、「スーパーユーザー」の「ユーザー名」と「パスワード」を入力しログインする。

![スクリーンショット 2019-07-05 18.00.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452364/373edd30-68a0-7611-e28b-ca06b1802d85.png)

ログインすると、以下の画面が表示される。

![スクリーンショット 2019-07-05 18.01.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452364/c73a7a45-f455-72e4-55ec-bef5d9e98f4e.png)

コマンドラインで ```Ctrl + c``` を押下して通常の入力に戻ることができる。

Admin画面が表示されていることを確認して作業に異常がないことが確認できた。さあ、テンプレート作成へ。

#テンプレートを作成する
アプリフォルダへ移動し ```templates``` （Djangoが自動で読み取るので一字一句同じ）フォルダを作成する。```templates``` フォルダ内に ```index.html``` （任意の名前）を作成する。以下のようなファイル構成になっていればよい。

![スクリーンショット 2019-07-05 18.17.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452364/d89364b0-c91f-5f41-9b5d-d411f12e1ed8.png)

```index.html``` に ```Hello World``` （任意）を入力する。

```html:testapp\templates\index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    Hello World!
  </body>
</html>
```

これでテンプレートの準備は完了。次は、アプリのURLと管理フォルダのURLの紐づけを行う。

#アプリのURLを登録する
管理フォルダ内の ```urls.py``` を開く。ライブラリ ```django.urls``` からインポートするモジュールに ```include``` を追加する。
```urlpatterns ``` のリスト内に以下のとおり入力して、アプリのURLを関連づける。アプリのURLのファイルはこれから作成する。

```python:testproject\urls.py
from django.contrib import admin
from django.urls import path, include #<= include を追加する

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('testapp.urls')),　#アプリのurls.py(これから作成する）を登録する。カンマを忘れずに。
]
```

次に、アプリフォルダ内の直下に ```urls.py``` を作成する。写真のような構成になっていればよい。

![スクリーンショット 2019-07-05 18.36.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452364/d91ee0b5-1485-3143-2530-f0a055ead7d6.png)


 ```urls.py``` を開き、以下のとおり入力する（基本的に管理フォルダの ```urls.py``` をコピペ）。
アプリフォルダ内から ```views(.py)``` をインポートする。 ```views``` 内のファンクション ```index``` （これから作成する）を、pathに登録する。クライアントがこの ```path``` を訪問すると ```views.index``` が起動されることになる。

```python:testapp\urls.py
from django.contrib import admin
from django.urls import path
from . import views　# 同じフォルダ内からviewsをインポートする

urlpatterns = [
    path('', views.index),　#pathにviews.indexを登録する
]
```

######つまり、以下のルートを経て、はるばる ```views.index``` が起動されるように設定しているのである。

クライアントがルート（""）urlをたたく　&rArr;　
管理フォルダ内の ```url.py``` が読み込まれる &rArr;　
ルート（""）urlのpathには ```include``` により ```testapp.urls``` へ行くように指示されている &rArr; 
```testapp.urls``` では ```views.index``` を起動するように指示されている。 &rArr; 
```views.index``` が起動される。

さて、最後の作業、```views.py``` を作成しよう！

#viewsを作成する
アプリフォルダ内の ```views.py``` 開き、以下のように入力する。

```python:testapp\views.py
from django.shortcuts import render

def index(request):　#「アプリのURLを登録する」セクションのurls.pyで登録したindexファンクションとはこのこと
    return render(request, "index.html") 　#「テンプレートを作成」セクションで作成したテンプレートを登録する
```

これにより、```view.py``` では「 ```index``` ファンクションが読み込まれたら ```index.html``` を表示させよ」と指示している。

#テスト
以上で作業は終わり。サーバーを立ち上げて「Hello World」が表示されいるか確認する。

サーバーを立ち上げる

```cmd:testproject
python manage.py runserver
```

ブラウザのアドレスバーに ```127.0.0.:8000``` を入力する
写真のように表示されていたら成功！


![スクリーンショット 2019-07-05 19.11.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452364/4034d12a-f447-94f6-66b3-00ec14dd867c.png)

以上、最速アプリの作成手順でした。今回はデータモデルは使用していませんが、別の投稿でデータモデルを使ったアプリの手順も説明したいと思います。

感想などありましたら、よろしくお願いいたします。