练习 - 创建视图

已完成

我们想要更新应用程序,以提供一个狗收容所的列表。 还希望该应用程序在用户单击或点击单个收容所时显示详细信息。 为此,我们将创建两个视图,然后注册适当的路径。

创建视图

  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. 在 dog_shelters 中创建一个名为 urls.py的新文件

  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/<int:pk> 来引用 shelter_detail 视图。 如前文所述,pk 将作为 pk 参数传递给 shelter_detail

在我们的项目中注册 URLconf

Django 使用一个核心 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. 选择“文件”>“全部保存”,以保存所有文件。