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

# はじめに

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

シリーズ

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

## 本記事執筆のきっかけ

現職で使用しているPythonスキルを高めるためにWebアプリを作成しようと思い立ちました。
「Djangoを使用すれば簡単にWebアプリ作成できるよ！」という記事を見つけ、さっそくトライしてみました。

## Djangoってなにもの？

<img width="30%" alt="ファイル名" src="https://static.djangoproject.com/img/logos/django-logo-negative.png">

「Pythonで作られているWebフレームワーク」つまり、Pythonを用いたWebアプリ作成に必要な機能がまとまったパッケージのようなものです。
具体的にはユーザー認証（サインアップ、サインイン、サインアウト）、管理者用の画面、フォーム、ファイルのアップロードなどWebサイト構築に必要な機能が含まれてます。

## 初心者はなにから始めるか？

<img width="60%" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763383/5ff6af7d-ca67-7d4e-6e76-06af4172e2b3.png">

Googleで「Django」と検索すると候補の2番目にチュートリアルの文字を発見しました。
Djangoを動く環境をセットアップするためにやっていきます。

## Djangoチュートリアルでアプリ作成

[はじめての Django アプリ作成、その 1](https://docs.djangoproject.com/ja/3.1/intro/tutorial01/)
<img width="60%" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763383/806fd219-de58-4a5d-f6a4-3832bb2dcbd2.png">

さっそく始めていきましょう。

と思ったら、インストールは別ページのようですのでリンク先からインストールしていきましょう。
[クイックインストールガイド](https://docs.djangoproject.com/ja/3.1/intro/install/)

## Djangoのインストール前準備

### Pythonバージョン確認

Pythonバージョン Python 3.8.6

```python

Python 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:37:30) [MSC v.1927 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
```

### 作業フォルダ作成

作業フォルダをエクスプローラで作榮します。

今回は「C:django/poll」とします。

<img width="60%" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763383/043859dd-69ba-a3bb-e142-85efd87c9a59.png" border="1">

### 仮想環境作成

作業フォルダにて仮想環境ライブラリをpipインストールします。

- pipenv

```python

C:\django\poll>pip install pipenv
Collecting pipenv
  Using cached pipenv-2020.8.13-py2.py3-none-any.whl (3.9 MB)
Collecting virtualenv-clone>=0.2.5
  Using cached virtualenv_clone-0.5.4-py2.py3-none-any.whl (6.6 kB)
Requirement already satisfied: pip>=18.0 in c:\python\lib\site-packages (from pipenv) (20.2.1)
Requirement already satisfied: setuptools>=36.2.1 in c:\python\lib\site-packages (from pipenv) (49.2.1)
Collecting virtualenv
  Using cached virtualenv-20.0.32-py2.py3-none-any.whl (4.9 MB)
Collecting certifi
  Using cached certifi-2020.6.20-py2.py3-none-any.whl (156 kB)
Collecting six<2,>=1.9.0
  Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting distlib<1,>=0.3.1
  Using cached distlib-0.3.1-py2.py3-none-any.whl (335 kB)
Collecting filelock<4,>=3.0.0
  Using cached filelock-3.0.12-py3-none-any.whl (7.6 kB)
Collecting appdirs<2,>=1.4.3
  Using cached appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Installing collected packages: virtualenv-clone, six, distlib, filelock, appdirs, virtualenv, certifi, pipenv
Successfully installed appdirs-1.4.4 certifi-2020.6.20 distlib-0.3.1 filelock-3.0.12 pipenv-2020.8.13 six-1.15.0 virtualenv-20.0.32 virtualenv-clone-0.5.4
WARNING: You are using pip version 20.2.1; however, version 20.2.3 is available.
You should consider upgrading via the 'c:\python\python.exe -m pip install --upgrade pip' command.

C:\django\poll>
```

仮想環境を起動します

```python

C:\django\poll>pipenv shell
Creating a virtualenv for this project…
Pipfile: C:\django\poll\Pipfile
Using C:/python/python.exe (3.8.6) to create virtualenv…
[   =] Creating virtual environment...created virtual environment CPython3.8.6.final.0-32 in 1521ms
  creator CPython3Windows(dest=C:\Users\wmgoz\.virtualenvs\poll-HcNSSqhc, clear=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\wmgoz\AppData\Local\pypa\virtualenv)
    added seed packages: pip==20.2.3, setuptools==50.3.0, wheel==0.35.1
  activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

Successfully created virtual environment!
Virtualenv location: C:\Users\wmgoz\.virtualenvs\poll-HcNSSqhc
Creating a Pipfile for this project…
Launching subshell in virtual environment…
Microsoft Windows [Version 10.0.18362.1082]
(c) 2019 Microsoft Corporation. All rights reserved.

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

作業ディレクトリの前にかっこ"()"がついていれば、起動完了です。

続いて仮想環境の状態を確認してみましょう。
「Pipfile」内に仮想環境にインストールされているパッケージが記載されます。複数人で開発する場合はPipfileを共有すればよさそうです。

```Pipfile:Pipfile

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.8"

```

仮想環境作成時点ではPython3.8のみインストールされています。今後は仮想環境の中にパッケージ類をインストールしていきます。

## Djangoのインストール

では、Djangoをインストールしましょう。
仮想環境にパッケージをpipインストールする場合は「pipenv install ***」を用います。

```python

(poll-HcNSSqhc) C:\django\poll>pipenv install django
Installing django…
Adding django to Pipfile's [packages]…
Installation Succeeded
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
           Building requirements...
Resolving dependencies...
Success!
Updated Pipfile.lock (a6086c)!
Installing dependencies from Pipfile.lock (a6086c)…
  ================================ 0/0 - 00:00:00

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

### flake8/autopep8のインストール

```python

(poll-HcNSSqhc) C:\django\poll>pipenv install --dev flake8 autopep8
Installing flake8…
Adding flake8 to Pipfile's [dev-packages]…
Installation Succeeded
Installing autopep8…
Adding autopep8 to Pipfile's [dev-packages]…
Installation Succeeded
Pipfile.lock (a6086c) out of date, updating to (329161)…
Locking [dev-packages] dependencies…
 Locking...Building requirements...
Resolving dependencies...
Success!
Locking [packages] dependencies…
           Building requirements...
Resolving dependencies...
Success!
Updated Pipfile.lock (329161)!
Installing dependencies from Pipfile.lock (329161)…
  ================================ 0/0 - 00:00:00

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

「Pipfile」を確認します。

```Pipfile:Pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
flake8 = "*"
autopep8 = "*"

[packages]
django = "*"

[requires]
python_version = "3.8"
```
「django」「flake8 」「autopep8」がインストールされています。(*は最新版という意味です)

## プロジェクトを作成する

Djangoプロジェクトを作成します。プロジェクト名はconfigとします。

```python

(poll-HcNSSqhc) C:\django\poll>django-admin startproject config .
```
以下のようなフォルダ・ファイルが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763383/c98bea8b-46a1-6d58-cf9a-2466fc850be2.png)

## プロジェクトを起動する

Djangoプロジェクトを起動します。

```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 - 12:21:42
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/)」をブラウザで開き、トップページを確認しましょう。

<img width="60%" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/763383/418fb8bf-4e29-7bae-c4f0-61643e4291a2.png">

このような画面が表示されればセットアップ完了です。

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