【Django】はじめてのDjangoアプリ第2回

django

PythonのWEBフレームワークDjangoを利用したアプリケーションの公式テュートリアルに沿ったWEBアプリケーション作成のメモ第2回です。

Writing your first Django app, part 1 | Django documentation
The web framework for perfectionists with deadlines.

前回はDjangoの開発サーバーの起動とデフォルトページの表示を行いました。

今回は、投票アプリを作成していきます。

プロジェクトとアプリ

Django で作成する各アプリケーションは、特定の規則に従う Python パッケージで構成されます。 Django には、アプリの基本的なディレクトリ構造を自動的に生成するユーティリティが付属しているため、ディレクトリを作成するのではなく、コードの作成に集中できます。

プロジェクトとアプリの比較

プロジェクトとアプリの違いは何ですか?アプリとは、ブログ システム、公文書のデータベース、小規模な投票アプリなど、何かを実行する Web アプリケーションです。プロジェクトは、特定の Web サイトの構成とアプリのコレクションです。プロジェクトには複数のアプリを含めることができます。アプリは複数のプロジェクトに含めることができます。

私たちのアプリは Python パス上のどこにでも存在できます。このチュートリアルでは、mysite のサブモジュールではなく、独自のトップレベル モジュールとしてインポートできるように、manage.py ファイルと同じディレクトリに投票アプリを作成します。

アプリの作成

「manage.py」あるプロジェクトトップでコマンド実行します。

python manage.py startapp polls

ビュー作成

「polls/views.py」を開いて追記します。

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

ルーティング

「polls/urls.py」を作成して追記します。

from django.urls import path

from . import views

urlpatterns = [
    path("", views.index, name="index"),
]

「mysite/urls.py」の「from django.urls ・・・」の行を編集します。

※「include, 」を追記します。

from django.urls import include, path

「mysite/urls.py」の「urlpatterns」の配列に追記します。

    path("polls/", include("polls.urls")),

▼完成形「mysite/urls.py」

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path("polls/", include("polls.urls")),
    path('admin/', admin.site.urls),
]

include() 関数を使用すると、他の URLconf を参照できます。 Django が include() に遭遇すると、その時点までに一致した URL の部分が切り取られ、残りの文字列が追加の処理のために含まれている URLconf に送信されます。

include() の背後にある考え方は、URL のプラグ アンド プレイを簡単にすることです。投票は独自の URLconf (polls/urls.py) 内にあるため、「/polls/」、「/fun_polls/」、「/content/polls/」、またはその他のパス ルートに配置できます。アプリは引き続き動作します。

include() を使用する場合

他の URL パターンを含める場合は、常に include() を使用する必要があります。 admin.site.urls はこれに対する唯一の例外です。

WEBブラウザで表示確認

WEBブラウザで http://localhost:8000/polls/ にアクセスします。

メッセージが表示されました。

今回は以上です。

次回はデータベースのセットアップと操作を予定しています。

  • 0
  • 0
  • 0
  • 0

コメント

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