K-fix Learning & Playing

Python


DjangoでWeb開発(1)

Djangoは、Pythonで実装されたWebアプリケーションフレームワークです。
フレームワークとは、簡単なWebサーバを立ち上げたり、APIを開発するのに向いています。
頻繁に使用されるパーツを最初から用意されているので、アプリの管理画面を作ろうと思った時は、コマンド1つで実装させることができます。

Django インストール

動画ではPythonと関連付けているVScode(Visual Studio Code)でDjangoをインストールしています。インストールは、ターミナルビューで行い、次のコマンドでインストールしています。逆にDjangoをアンインストールしたい時は、install部分をuninstallにします。

先頭に入力しているpipは、Pythonのパッケージを管理するためのツールで、サードパーティが配布しているパッケージをインストールする時に使用します。
インストール済みのパッケージを一覧で確認したい場合は、以下のようにコマンドを実行します。

Django プロジェクトの作成

DjangoでWebアプリケーションを作成する場合、最初にプロジェクトを作成します。プロジェクトとは、さまざまな機能の集まりで、Webアプリケーションそのものと考えても良いです。このプロジェクトには、複数のWebアプリケーションを作ることができ、アプリケーションごとに管理することができます。
プロジェクトを作るコマンドは以下になります。

コマンドの最後のドット(.)を付けなくてもプロジェクトは作成できますが、同じ名前のディレクトリが2つ作成されるので混同してしまいます。ドットは付けることを推奨します。プロジェクト名は任意ですが、configという名前を付けることが多いようです。
startprojectのコマンドを実行すると、DjangoからWebサイトに必要なファイルをプロジェクト内にコピーして、最低限必要なファイルを作成してくれます。

Django サーバの起動

プロジェクトを作成すると、サーバを起動できるようになります。起動は、manage.pyファイル内のコマンドユーティリティを使用します。次のコマンドでサーバを起動します。

起動に成功すると、ターミナルビューの最後に「Quit the server with CTRL-BREAK」と表示されます。これはサーバを停止する時のメッセージです。実際に停止したい時は「Ctrl + C」のショートカットを使います。

サーバを起動したら、ブラウザを立ち上げてURLに「127.0.0.1:8000」と入力して確定します。「127.0.0.1」は、自サーバを指す特別なIPアドレスで、「localhost」に置き換えて「localhost:8000」とすることもできます。「8000」はポート番号と呼ばれるもので、DJangoのサーバに割り当てられた番号です。
ブラウザにはロケットが飛び上がるようなイメージが表示されます。最初は英語表記になっています。日本語表記にするには、settings.pyファイルのLanguage_codeを「ja」、TIME_ZONEを「Asia/Tokyo」に変更することで、日本語表記と日本時刻で表示されるようになります。

DJangoプロジェクト内の流れ

ユーザ(クライアント)のブラウザからサーバにリクエストが送られると、最初にプロジェクト内のurls.pyがそのリクエストを受け取ります。urls.pyには、受け取ったリクエストはどのviews.pyに送るかが書かれているので、その指示書通りに該当するviews.pyにリクエストを送ります。
リクエストを受け取ったviews.pyファイルは、そのリクエストに応じたテンプレートファイルと必要なデータをmodels.pyから受け取り、形作ります。その作成されたデータをユーザにレスポンス(返信)します。
つまり、実質的に編集するファイルは、urls.py、views.py、models.pyの3つです。尚、settings.pyは、新しく作成したディレクトリがどこにあるかなどを指定する時に編集します。

関数を使って出力

関数を使ってブラウザ上に「こんにちは」と表示する方法を紹介します。関数を記述するのは、views.pyです。プロジェクトを作成した時点では、views.pyファイルは存在しないので、プロジェクト内にviews.pyを作成して、その中に関数を記述します。関数名は任意で良いです。引数には「request」と指定します。ブラウザに表示するにはHttpResponseクラスを使用します。HttpResponse('こんにちは')と記述すると、「こんにちは」という文字をレスポンスの値とします。

関数を記述したviews.pyを呼び出すために、urls.pyにパスを追加します。パスには、path('hello/',helloFunction)と入力します。pathの最初の引数には、URLで呼び出す時の文字列になります。この場合は「127.0.0.1:8000/hello/」とアドレスに記述すると呼び出されrます。2つ目の引数には呼び出す関数名を記述します。そして、この関数はどこに存在するかをインポート文として追加します。
「from .views import helloFunction」と記述すると、views.pyからhelloFunction関数をインポートします。つまり、views.pyの関数が実行されることになります。

クラスを使って出力

クラスを使うと、HTMLファイルを表示する操作を行うことができます。クラスもviews.pyに記述します。
動画ではHelloViewというクラスを作っています。HTMLファイルはテンプレートという形式で操作するため、このクラスはTemplateViewというクラスを継承させます。TemplateViewクラスのtemplate_nameは、呼び出したいHTMLファイルを指定するオブジェクトです。
TemplateViewクラスも「from django.veiws.generic import TemplateView」でインポートしておきます。

クラスを作成したら、HTMLファイルを保管するためにtemplatesディレクトリを作成します。templatesディレクトリはmanage.pyと同じ階層に作成する必要があります。templatesディレクトリ内に呼び出すHTMLファイルを作成して、その中に出力するためのコードを書きます。
新しくtemplatesディレクトリを作成したので、このディレクトリの存在する場所をsettings.pyファイルに書き込みます。記述場所はTEMPLATESの'DIRS'で、[]の中に、[BASE_DIR,'templates']と書きます。BASE_DIRは、manage.pyの存在する階層を示しています。つまり、manage.pyと同じ場所にtemplatesディレクトリが存在していることを指し示しています。

最後にHelloViewクラスを呼び出すためのパスをurls.pyに記述します。パスは「path('hello2/', HelloView.as_view())」と記述します。これは、「127.0.0.1:8000/hello2」のアドレスでhello.htmlを表示させます。2つ目の引数にはクラス名を指定していますが、指示書がクラスの場合はas_view()メソッドを追記しておく必要があります。

この動画では、Djangoの基本的な操作を流れを紹介しています。本来は、プロジェクトの中にWebアプリケーションを作ることになります。それは次の動画で紹介いたします。