演習 - ビューを作成する

完了

犬用シェルターの一覧を提供するようにアプリケーションを更新します。 また、アプリケーションで他のユーザーが個々のシェルターをクリックまたはタップして詳細を表示できるようにします。 これを行うには、2 つのビューを作成してから、適切なパスを登録します。

ビューの作成

  1. Visual Studio Code で dog_shelters/views.py を開きます。

  2. from django.shortcuts import render という行の末尾に , get_object_or_404 を追加します。 行は次のようになります。

    from django.shortcuts import render, get_object_or_404
    
  3. from django.shortcuts import render という行の下に、モデルをインポートする次の Python コードを追加します。

    from . import models
    
  4. views.py の最後に、すべてのシェルターを読み込む次のコードを追加して、テンプレートのコンテキスト オブジェクトを作成してから、ユーザーのテンプレートをレンダリングします。 これは、シェルターのリスト ビューおよびサイトの既定のページになります。

    def shelter_list(request):
        shelters = models.Shelter.objects.all()
        context = {'shelters': shelters}
        return render(request, 'shelter_list.html', context)
    
  5. views.py の最後に、その pk または主キーで特定のシェルターを読み込む次のコードを追加して、テンプレートのコンテキスト オブジェクトを作成してから、ユーザーのテンプレートをレンダリングします。 これは、シェルターの [詳細] ページになります。

    def shelter_detail(request, pk):
        shelter = get_object_or_404(models.Shelter, pk=pk)
        context = {'shelter': shelter}
        return render(request, 'shelter_detail.html', context)
    

URLconf を作成する

ビューを呼び出せるようにするには、適切なパスを登録する必要があります。

  1. urls.py という名前の新しいファイルを dog_shelters に作成します。

  2. 次のコードを追加して、作成した 2 つのビューのパスを登録します。

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.shelter_list, name='shelter_list'),
        path('shelter/<int:pk>', views.shelter_detail, name='shelter_detail'),
        # More patterns to come later
    ]
    

shelter_list ビューをポイントする既定のパス ('') が作成されていることに注目してください。 また、shelter_detail ビューを参照するように shelter/<int:pk> を登録しました。 前に強調したように、pkpk パラメーターとして shelter_detail に渡されます。

URLconf をプロジェクトに登録する

Django では、1 つのコア urls.py ファイルが URLconf として使用されます。 そのため、作成したものが適切に登録されていることを確認する必要があります。

  1. project/urls.py を開きます。

  2. ファイルの末尾に向かって、次のような 17 行目を検索します。

    from django.urls import path
    

    行の末尾に , include を追加します。 新しい 17 行目は次のようになります。

    from django.urls import path, include
    
  3. TODO: Register URLconf という行の下に、次を追加します。

    # TODO: Register URLconf
    path('', include('dog_shelters.urls')),
    

    重要

    末尾にコンマが必要です。

  4. [ファイル]>[すべて保存] を選択して、すべてのファイルを保存します。