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")。
挑战
简单在 /about/ 显示现成的模板 jobs/templates/jobs/about.html。
- 在
jobs/views.py中添加AboutView,这是一个用于渲染该模板的TemplateView。 - 在
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 在线编辑器