Menu
CoddyTech

TemplateView

本课属于 Coddy Django 学习旅程的“基于类的视图”单元。第 2 课,共 18 课。

招聘信息网站需要一个只渲染模板的“关于”页面。Django 为此提供了一个类:TemplateView。它的 get() 已经编写好了:它会渲染 template_name 中指定的模板。一个食谱网站将常见问题解答保存在 recipes/templates/recipes/pages/faq.html 中:

from django.views.generic import TemplateView


class FaqView(TemplateView):
    template_name = "recipes/pages/faq.html"

这就是整个视图。Django 将这些预先编写好的视图类称为通用视图。你可以通过 template_name 这样的类属性来设置它,Django 编写的代码会读取这些属性。

template_name 就是你传给 render() 的名称:templates/ 后面的文件路径。如果漏掉一个文件夹,页面就会因 TemplateDoesNotExist 而加载失败。路由和其他基于类的视图一样:path("faq/", views.FaqView.as_view(), name="faq")。

challenge icon

挑战

简单

在 /about/ 显示现成的模板 jobs/templates/jobs/about.html。

  1. 在 jobs/views.py 中添加 AboutView,这是一个用于渲染该模板的 TemplateView。
  2. 在 jobs/urls.py 中添加名为 about 的路由 "about/"。

打开 /about/:页面会显示 Job Board lists jobs at small tech companies in Berlin, Lisbon and London.

亲手试试

from django.shortcuts import render
from django.views import View

from .models import Job


class HomeView(View):
    def get(self, request):
        count = Job.objects.count()
        return render(request, "jobs/home.html", {"count": count})

基于类的视图中的所有课

自己练习: Django 在线编辑器