【初心者】【Python/Django】駆け出しWebエンジニアがDjangoチュートリアルをやってみた～その1～

# はじめに

みなさん、初めまして。
Djangoを用いた投票 (poll) アプリケーションの作成過程を備忘録として公開していこうと思います。
Qiita初心者ですので読みにくい部分もあると思いますがご了承ください。

シリーズ

- [【初心者】【Python/Django】駆け出しWebエンジニアがDjangoチュートリアルをやってみた～その0～](https://qiita.com/oboerarenai_user/items/4ff87b2afbad8c16ad40)

# 作業開始

ではチュートリアルに沿って作業を進めていきましょう！
URL↓

[はじめての Django アプリ作成、その 1](https://docs.djangoproject.com/ja/3.1/intro/tutorial01/)

## Djangoのバージョン確認 (本シリーズ～その0～の確認)

まずは仮想環境を起動します。
Djangoチュートリアルでは実環境にインストールしていますが、本シリーズでは仮想環境を構築しています。

```python

C:\django\poll>pipenv shell
Launching subshell in virtual environment…
Microsoft Windows [Version 10.0.18362.1082]
(c) 2019 Microsoft Corporation. All rights reserved.
(poll-HcNSSqhc) C:\django\poll>
```

Djangoのバージョンを確認します。

```python

(poll-HcNSSqhc) C:\django\poll>python -m django --version
3.1.2

(poll-HcNSSqhc) C:\django\poll>
```

## プロジェクト作成 (本シリーズ～その0～の確認)

既に「本シリーズ～その0～」にてプロジェクト作成しているため、プロジェクトを構成しているファイルについてみていきたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763383/c98bea8b-46a1-6d58-cf9a-2466fc850be2.png)

Djangoチュートリアルではプロジェクト名を「mysite」としていますが、本シリーズでは「config」としています。読み替えていただきますようお願いいたします。

以下、引用 ※1
>
- 外側の mysite/ ルートディレクトリは、プロジェクトのコンテナです。その名前は Django にとって重要ではありません。任意の名前に変更できます。
- manage.py: Django プロジェクトに対する様々な操作を行うためのコマンドラインユーティリティです｡詳しくは django-admin と manage.py 内の manage.py を参照してください｡
- 内側の mysite/ ディレクトリは、このプロジェクトの実際の Python パッケージです。この名前が Python パッケージの名前であり、 import の際に 使用する名前です (例えば import mysite.urls) 。
- mysite/__init__.py: このディレクトリが Python パッケージであることを Python に知らせるための空のファイルです。Python の初心者は、 Python の公式 ドキュメントの more about packages を読んで下さい。
- mysite/settings.py: Django プロジェクトの設定ファイルです。 設定の仕組みは Djangoの設定 を参照してください。
- mysite/urls.py: Django プロジェクトの URL 宣言、いうなれば Django サイトにおける「目次」に相当します。詳しくは URL ディスパッチャ を参照 してください。
- mysite/asgi.py: プロジェクトを提供する ASGI 互換 Web サーバーのエントリポイント。詳細については How to deploy with ASGI を参照してください。
- mysite/wsgi.py: プロジェクトをサーブするためのWSGI互換Webサーバーとのエントリーポイントです。詳細は WSGI とともにデプロイするには を参照してください。

## 開発用サーバ (本シリーズ～その0～の確認)

開発用サーバを起動します。

```python

(poll-HcNSSqhc) C:\django\poll>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations 
for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
October 04, 2020 - 14:41:45
Django version 3.1.2, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
```

~~「[http://172.0.0.1:8000/](http://172.0.0.1:8000/)」~~「[http://127.0.0.1:8000/](http://127.0.0.1:8000/)」をブラウザで開き、トップページを確認しましょう。
ターミナルに「HTTP 200」と表示されることを確認してください。

```python

[04/Oct/2020 14:42:14] "GET / HTTP/1.1" 200 16351
```

## Pollsアプリケーションを作る

「polles」アプリケーションを作成しましょう。

```python
(poll-HcNSSqhc) C:\django\poll>python manage.py startapp polls
```

この時、以下のpollsファイル群が作成されたことを確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763383/7f8f2ce7-89ef-2bf7-1526-718e2002bc8e.png)

## はじめてのビュー作成

以下の通りファイルを編集する。

- poll/polls/views.py

画面に表示される内容を記述したビューファイル。"Hello,world.You're at the polls index."と表示される。

```python:polls/views.py
from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse

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

- polls/urls.py

「poll/polls/views.py」を表示させるためにURLを対応付けるコントローラファイル。以下では、カレント(poll/polls/)のviews.py内のindex関数を引数name='index'で実行する。

```python:polls/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path( '', views.index, name = 'index'),
]
```

- config/urls.py

フロントのコントローラファイル。
「http\://127.0.0.1:8000/polls/」にアクセスがあった場合は、polls/urls.pyを返します。
「http\://127.0.0.1:8000/admin/」にアクセスがあった場合は、admin/site/urls.pyを返します。←管理画面が表示されます。

```python:config/urls.py

from django.contrib import admin
from django.urls import include, path

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

開発サーバを起動する

```python
(poll-HcNSSqhc) C:\django\poll>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
October 04, 2020 - 17:05:53
Django version 3.1.2, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
```

「[http://127.0.0.1:8000/polls/](http://127.0.0.1:8000/polls/)」をブラウザで開き、トップページを確認しましょう。
"Hello,world.You're at the polls index."と表示されればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763383/53b33828-b228-a658-6750-ffa0759a6e5d.png)


今日はここまでにします。ありがとうございました。