気ままに趣味旅行

面白いコト「拡がる/拡げる」

WEBアプリケーションを作る1ーDjango編

どうもhiroakiです。

 

先日より、HTMLとCSSについて扱ってきました。

今回は、Djangoを使ったWEBアプリケーションを作ってみたいと思います。こちらも初めて作りますので、間違いなどあれば、ご指摘ください。

 

Djangoとは

DjangoPythonでwebアプリケーションを作るフレームワークのひとつです。 PythonのwebアプリケーションフレームワークにはDjango、Flask、bottoleなど様々あります。これらのフレームワークを使うことで、初めから自分でコードを作る必要がなくなります。開発速度が上がりますね。また、複雑なコードを用意しなくてもいいなどのメリットがあります。

以前も少しご紹介しましたが、ウェブアプリを作る人の中にwebフレームワークを使わない人はいません。以下もご参考ください。

www.sejuku.net

 

 

Djangoの動作イメージ

djangoを操作する場合は次のイメージを持ってください。

f:id:hiroakies4463:20181218165907j:plain

まず、WEBブラウザなどのクライアントがリクエストを投げますね。それをルーターが振り分け(ルーティング)、ビューを呼び出します。ビューはそのリクエストに応じて、モデルとテンプレートを呼び出します。

モデルは、アプリで扱うデータを保持し、操作するファイルです。このモデルを通じてデータベースを操作します。
テンプレートは、呼び出したデータをどのように表示するか、つまり表示形式を記述します。ここにはHTML、CSSJavascriptファイルなどを保管します。

そして、最終的な結果をビューからWEBブラウザなどのクライアントに返します。

 

下の記事も参考にしてみてください。

qiita.com

 

 プロジェクトを作ろう

Djangoの「プロジェクト」は、ウェブサイト向けの設定とアプリケーションを集めたものです。Djangoでは、機能別にアプリケーションを用意して、それを1つのプロジェクトにまとめていきます。

まずは、コマンドプロンプトでフォルダを作りたいカレントディレクトリへ移動してください。そこで、下記のコマンドを実行します。myappの部分はプロジェクト名になりますので、自由につけてください。

  1. django-admin startproject myapp

プロジェクトが作成されたら、settings.pyディレクトリを探し、そのうちのALLOWED_HOSTSに下記のように代入します。

  1. #settings.py
  2. ~~
  3. ALLOWED_HOSTS=['*']
  4. ~~

これで、ひとまず完成です。では、実行してみましょう。

  1. python manage.py runserver

http://127.0.0.1:8000にアクセスして、djangoサーバーのウェブページを表示します。「CTRL」キーと「C」キーを同時に押して停止させましょう。

 

アプリケーションを作る

先ほど作ったmyappフォルダへ移動して、bbsアプリを作ります。このbbsの部分もアプリ名なので、自由につけてください。

  1. cd myapp
  2. python manage.py startapp bbs

startappを実行すると、アプリケーションに必要なファイルが自動的に作られます。

ディレクトリを確認します。下のようになっていれば成功です。

myapp/

 ├ bbs/

           ├  __init__.py

           ├ admin.py

           ├ apps.py

           ├ migrations/

                  └  __init__.py

           ├ models.py

           ├ tests.py

           └ views.py

 ├ db.sqlite3

 ├ manage.py

 └ myapp/

         ├  __init__.py

         ├ __pycache__/

                   ├ __init__.cpython-36.pyc 

                   └ settings.cpython-36.pyc

         ├ settings.py

         ├ urls.py

         └ wsgi.py

 

では、サイトを開いた時に「Hello Django」と表示させましょう。

①まずはフォルダのview.pyを下記のように変更しましょう。

  1. #view.py
  2. from django.shortcuts import render
  3. from django.http import HttpResponse
  4. def index(request):
  5.     return HttpResponse('Hello Django')

②次に、 このプログラムを呼び出すよう、ルーティングを設定します。ジャンゴではプロジェクト全体とアプリケーションの二段階でルーティングを設定します。

まず、プロジェクト全体のルーティングを設定します。ルーティングはurls.pyで設定していきます。myapp/myappディレクトリにあるurls.pyでurlとbbsアプリを結びつけるよう設定しましょう。赤字部分を追加してください。

  1. #myapp/urls.py
  2. from django.contrib import admin
  3. from django.urls import include,path
  4. urlpatterns = [
  5.     path('bbs/',include('bbs.urls')),
  6.     path('admin/', admin.site.urls),
  7. ]

urlpatternsというリストの中でpath関数を呼び出して、urlのコードを紐づけします。5.はサーバーアドレスの後ろに、bbsが続いていれば、include内にある、bbsアプリのurls.pyを利用することを表しています。

「bbsフォルダにurls.pyなんてあったっけ?」という方、フォルダを確認しましょう。

ありませんね?ということで、bbsフォルダ内に、urls.pyファイルを作ります。これが、アプリ内のルーターの役割になります。

  1. #bbs/urls.py

  2. from django.urls import path

  3. from . import views

  4. urlpatterns=[

  5. path('',views.index,name='index'),

  6. ]

では、5.のpath関数をみていきます。全体で設定したルーティングに何も追加していなければ(''の場合)、views.pyのindex関数を呼び出します。name='index'となっているのは、このルート名をindexとするという意味です。

③最後に、このbbsアプリをプロジェクトに登録します。myappディレクトリのsettings.pyに赤字部分を追記します。

  1. #myapp/settings.py
  2. ~~
  3. INSTALLED_APPS = [
  4.     #最後のコンマのつけ忘れに注意!
  5.     'bbs.apps.BbsConfig',
  6.     'django.contrib.admin',
  7.     'django.contrib.auth',
  8.     'django.contrib.contenttypes',
  9.     'django.contrib.sessions',
  10.     'django.contrib.messages',
  11.     'django.contrib.staticfiles',
  12. ]
  13. ~~

bbsフォルダのapps.pyには、自動生成されたBbsConfigクラスが登録されているので、上記のようにプロジェクトに登録します。

ファイルを保存して、runserverしてみましょう。下のURLから、「Hello Django」と表示できれば成功です。

http://127.0.0.1:8000/bbs

 

 

今回は以上です。これだけでは、おそらく分からないと思いますので、次回以降詳しく解説していきます。何度も繰り返して理解してみてください。

また、不明点等ありましたら、気軽にコメントください。私も学びつつなので、一緒に頑張れたら嬉しいです。

 

では。