练习 - 创建视图
我们想要更新应用程序,以提供一个狗收容所的列表。 还希望该应用程序在用户单击或点击单个收容所时显示详细信息。 为此,我们将创建两个视图,然后注册适当的路径。
创建视图
在 Visual Studio Code 中,打开 dog_shelters/views.py。
在内容为
from django.shortcuts import render
的行的末尾添加, get_object_or_404
。 该行现在如下所示:from django.shortcuts import render, get_object_or_404
在内容为
from django.shortcuts import render
的行下方,添加以下 Python 代码以导入模型:from . import models
在 views.py 的末尾添加以下代码以加载所有收容所,为模板创建上下文对象,然后为用户呈现模板。 这将成为收容所的列表视图和站点的默认页面。
def shelter_list(request): shelters = models.Shelter.objects.all() context = {'shelters': shelters} return render(request, 'shelter_list.html', context)
在 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
要使我们的视图可调用,需要注册适当的路径。
在 dog_shelters 中创建一个名为 urls.py的新文件。
添加以下代码以注册创建的两个视图的路径:
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。 因此,我们需要确保我们创建的文件以正确方式注册。
打开 project/urls.py。
在该文件的底部,找到第 17 行,其内容为:
from django.urls import path
在行的末尾添加
, include
。 新的第 17 行现在应如下所示:from django.urls import path, include
在内容为
TODO: Register URLconf
的行下方,添加以下代码:# TODO: Register URLconf path('', include('dog_shelters.urls')),
重要
尾随逗号是必需项。
选择“文件”>“全部保存”,以保存所有文件。