TemplateView – Django基于类的通用视图
Django提供了几个基于类的通用视图来完成常见任务。其中最简单的是TemplateView。它渲染了一个给定的模板,其上下文包含了URL中的参数。
当你想在一个HTML页面上展示一些信息时,应该使用TemplateView。当你的页面有表单并对对象进行创建或更新时,不应该使用TemplateView。在这种情况下,FormView、CreateView或UpdateView是一个更好的选择。
TemplateView在以下情况下最适合。
- 显示 “关于我们 “这样的页面,是静态的,几乎不需要任何上下文。虽然,使用TemplateView的上下文变量是很容易的。
- 显示使用GET请求的页面,并且其中没有表单。
解释:
用一个例子来说明如何使用TemplateView。考虑一个名为geeksforgeeks的项目,有一个名为geeks的应用程序。
请参考以下文章,查看如何在Django中创建一个项目和一个应用程序。
如何在Django中使用MVT创建一个基本项目?
如何在Django中创建一个应用程序?
让我们使用基类视图写一个视图,然后修改为使用TemplateView。TemplateView将帮助我们避免几行代码。
- 在geeks应用程序的views.py文件中输入以下代码。
from django.views.generic.base import View
from django.shortcuts import render
class AboutUs(View):
def get(self, request, *args, **kwargs):
return render(request, "aboutus.html")
- 在geeks应用程序中创建一个名为templates的文件夹,然后在templates文件夹中创建一个名为aboutus.html的文件。
- 在aboutus.html文件中输入以下代码。
<!DOCTYPE html>
<html>
<head>
<title>AboutUs</title>
</head>
<body>
<h2>Welcome To GFG</h2>
</body>
</html>
- 在geeksforgeeks项目文件夹的urls.py中输入以下代码。
from django.contrib import admin
from django.urls import path
from geeks.views import AboutUs
urlpatterns = [
path('admin/', admin.site.urls),
path('',AboutUs.as_view(),name="aboutus")
]
- 运行以下三个命令,看看输出结果。
Python manage.py makemigrations
Python manage.py migrate
Python manage.py runserver
- 使用TemplateView也可以实现同样的输出,用下面的代码替换geeks应用程序的views.py文件的代码。
from django.views.generic.base import TemplateView
class AboutUs(TemplateView):
template_name = 'aboutus.html'
让我们检查一下http://localhost:8000/ 上的内容。
输出 –