PyCharmとDjangoでサクッとWebアプリの作成

## はじめに
PyCharmでDjangoアプリを作成することには次のような利点があります。

* Django関連のコマンド入力を削減できる
* デバッグがしやすい

今回は、Djangoサーバの起動と簡単なWebアプリの作成を行ってみます。


## Djangoサーバの起動

PyCharmを開くと次のような画面が現れるので、Create New Projectをクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3631343039322f66646166343738662d653265302d393064372d333765382d6536313637653861626535312e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614092/6162983c-154b-2dc3-1cc0-46c70c47459b.png)

次に左側からDjangoを選択します。ここではDjangoのプロジェクト名は`untitled4`となっています。また、`Application name`に`polls`と入力し、Createをクリックします。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3631343039322f66393765373262662d306665372d363266332d663635342d6563343166643961346361362e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614092/269029c5-07c0-85d4-10aa-c05d479ec1c6.png)

少し待つとプロジェクトとアプリケーションが作成されます。右上の三角形のボタンをクリックするとDjangoサーバが起動します。自分の環境ではなぜか`os`が定義されていなかったため、`settings.py`に`import os`と記述します。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3631343039322f34323837353265342d353638382d316535382d386663362d3734663464353732386435312e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614092/bf7e3b17-f3de-7d98-44d6-a198e8e535cb.png)

記述したあとで再度右上の三角形のボタンをクリックするとDjangoサーバのURLが表示されるのでクリックします。
![a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614092/6d068671-2784-502d-141d-2b97e60420f6.png)

次のような画面がWebブラウザで表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614092/2f5ae034-d2da-ef7a-80ee-c6152b58b66a.png)

## Webアプリの作成
Djangoのプロジェクトとアプリケーションは次のような関係となっています。プロジェクトとアプリケーションについて、2種類の`urls.py`を用いることで、アプリケーションごとの管理がしやすくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614092/36457234-f4d5-965a-cd15-ca3779ed7ad6.png)
画像元：https://zenn.dev/hathle/books/django-blog-book/viewer/06_urls

2つの`urls.py`と`views.py`を変更することで、Webサイトを自作できます。
`polls`ディレクトリ内に`urls.py`を新規作成し、次のように記入します。

```python
from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$', views.index, name='index'),
]
```

プロジェクト直下にもとから作成されている`urls.py`に、次のように記入します。

```python
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
    url(r'^polls/', include('polls.urls')), #this line added
    url(r'^admin/', admin.site.urls),
]
```

`polls`ディレクトリ内に`views.py`に、次のように記入します

```python
from django.http import HttpResponse

def index(request):
    # render() に置き換えると、用意したHTMLファイルにrequestやPythonの変数を渡すこともできる
    return HttpResponse("Hello, world. You're at the polls index.")
```

実行ボタンをクリックまたは`control+R`として`http://127.0.0.1:8000/polls/`にアクセスすると、`Hello, world. You're at the polls index.`と表示されます。

## その他Tips
* サーバの実行状態でプログラムを書き換えて`command+S`と保存したりタブを切り替えると、自動的にサーバをリロードしてくれます。

* Djangoでデータベースなどのコマンド操作を行う際には、`python manage.py`の後ろにコマンドを入力するのですが、`option+R`とすると、`python manage.py`を省略しつつ、**動的に補完を表示する**`manage.py`コンソールが現れます。

* PyCharm画面右上のDatabaseを用いることで、データベースの操作（挿入・検索・更新・削除）を簡単に行うことができます。データベースの作成は[このように](https://pleiades.io/help/pycharm/creating-and-running-your-first-django-project.html#creating_models)行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614092/466fce28-84dd-e457-b7cb-0ff216da9315.png)

* Djangoにはあまり関係ありませんが、PyCharm画面右上のSciViewでmatplotlibグラフやpandas表の表示を行うことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614092/49124c96-de41-775e-22fc-9ed02524327e.png)

## おわりに
コーディングを効率化させるPyCharmと、Webアプリ開発を効率化させるDjangoがうまく連携されていて便利だと思いました。次はデータベースやCSRF対策など、もう少し踏み込んだことを調べてみたいです。

## 追記
年間10,000円の有料版PyCharmでないと、Web開発において制限があるようです。自分は学生ライセンスが有効になっていたのでそのことに気づきませんでした。。
無料版と有料版の機能の違いは[こちら](https://dev.macha795.com/pycharm-free-paid-diff/)、学生ライセンスの申請方法は[こちら](https://blog.jetbrains.com/ja/2019/08/22/2105/)になります。