【Django】Djangoのインストールから"Hello world"まで【初心者の備忘録1】

Django

こんにちは、コウキです。

僕は、Webフレームワークを使うのはDjangoが初めてです。

Djangoの勉強は以前から始めていましたが、せっかくなので、備忘録としてまとめていきたいと思います。

今回はDjangoのインストールから、ブラウザで"Hello world"を表示するまでを解説します。

僕と同じようにDjango初心者の人の参考になれば幸いです。

開発環境

  • Python 3.7
  • IDEはPyCharm (無料版)

PyCharmでプロジェクトの作成

まず、PyCharmでプロジェクトを作成します。
プロジェクト名はmysiteにします。

PyCharmのプロジェクト作成時にvenvも作っておきます。
PyCharmだとVirtualenvを選択すると勝手に作ってくれるので便利ですね。

作成後はこのような画面になっています。

Djangoのインストール

Djangoをインストールしないことには始まらないので、pipでインストールします。

PyCharmのTerminalでは、すでにvenvに入っているので、そのままコマンドを入力します。

$ pip3 install Django

今回はDjango2.2.4がインストールされました。

Djangoのプロジェクト作成

次にDjangoのコマンドを使用して、Djangoのプロジェクトを作成します。

$ django-admin startproject config .

ここで作成されるものは、設定ファイルのようなものなので、ディレクトリ名はconfigにします。

すでにプロジェクトのフォルダは作ってあるので、作成場所はカレントディレクトリにしています。

コマンドを実行したあとは、以下のようなフォルダ構成になると思います。

$ tree -I venv
.
├── config
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

configがプロジェクトの設定ファイルです。

この中でよく使うものは、"settings.py", "urls.py", "manage.py"です。

ここで一度Djangoを動かしてみます。
サーバーを動かすには"manage.py"の"runserver"というコマンドを実行します。

python3 manage.py runserver

コマンドを実行したら、ブラウザで"127.0.0.1:8000"にアクセルしてみましょう。
以下の画面が表示されたら成功です。

このコマンドは開発用のものなので本番用には使えませんが、手軽に動作確認ができます。

サーバーを停止するには"Ctrl + C"を押します。

ちなみにですが、PyCharm右上にある"Edit Configurations..."をクリックして、以下の画像のように設定すると、実行ボタンを押すだけで、サーバーを起動できます。さらに、デバッグボタンを押すとデバッグモードで起動する事もできます。

"Script path"は自分の"manage.py"が入っているパスに書き換えてください。

アプリケーションの追加

プロジェクトにアプリを追加していきます。

Djangoでは機能ごとにアプリを分けて作るみたいです。

アプリを追加するには"manage.py"の"startapp"というコマンドを使います。
アプリの名前はapp1としておきます。

$ python3 manage.py startapp app1

これで、app1というディレクトリが作成されました。

.
├── app1
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── config
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

次に、Djangoにapp1というアプリを追加したことを知らせます。
これには"settings.py"の"INSTALLED_APPS"に"app1"を追加します。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app1',
]

templateファイルの作成

ブラウザに表示される見た目の部分を作成します。

まずは、"app1"の中に"templates"というディレクトリを作成し、その中にさらに"app1"というディレクトリを作成します。

"app1/templates/app1"の中に"hello_world.html"というファイルを作成し、中身を以下のものにします。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>{{ title }}</title>
</head>
<body>
    <p>{{ message }}</p>
</body>
</html>

titleとmessageは変数でviewから受け取ります。

今回は、app1の中に”templates”を作成しましたが、ベースディレクトリ直下に配置した方が都合が良いようです。

こちらの記事にまとめているので、参考にしてみてください。
【Django】templatesディレクトリをベースディレクトリ直下に変更する方法

viewの作成

ブラウザからリクエストを受け取って、レスポンスを返す部分を作成します。

まず、"app1/views.py"を開きます。
そして、中身を以下のように書き換えます。

from django.shortcuts import render
from django.views import View
class HelloView(View):
    def get(self, request):
        context = {
            'title': '初めてのDjango',
            'message': 'Hello World',
        }
        return render(request, 'app1/hello_world.html', context)
hello_view = HelloView.as_view()

Viewクラスを継承したHellowViewクラスを作成し、getメソッドを定義しています。
ちなみに、POSTリクエストの場合はpostメソッドを定義します。

クラスを作成したら、as_view関数でビュー関数化します。

urlの設定

リクエストされたurlによって、どのview関数を呼ぶかを定義する部分を作成します。

まずは、"config/urls.py"を以下のように変更します。

from django.contrib import admin
from django.urls import path, include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('app1/', include('app1.urls'))
]

ここでは、app1の"urls.py"を読み込むように設定しています。

続いて、app1の"urls.py"を記述していきますが、最初は入っていないため、"app1"の中に"urls.py"というファイルを作成します。

"app1/urls.py"の中身は以下のようにします。

from django.urls import path
from . import views
app_name = 'app1'
urlpatterns = [
    path('hello_world/', views.hello_view, name='hello')
]

これで、"app1/hello_world/"にアクセスしたときに"hello_view"を返すようになりました。

ちなみに、app_nameや、pathの引数のnameはurlの逆引きに使いますが、今回は特に関係ありません。

ブラウザで"Hello World"を表示する

ここまでで、ブラウザに"Hello world"を表示する準備ができました。

runserverを実行してブラウザで、
http://127.0.0.1:8000/app1/hello_world/
にアクセスすると、"Hello world"と表示されます。

最後に

今回は、Djangoを使ってブラウザで"Hello world"を表示するまでやりました。

内容としては、基礎の基礎なので、まだ本格的なアプリを作成することはできませんが、Webアプリ作成の第一歩にはなったと思います。

次は、もっとDjangoの機能を深堀りして、より本格的なアプリを作成できるようにしたいと思います。

コメント

タイトルとURLをコピーしました