gpt4 book ai didi

python - View 类中的 Django 渲染模板

转载 作者:行者123 更新时间:2023-12-01 00:51:50 26 4
gpt4 key购买 nike

为了进一步了解 Django 框架,我正在编写一个小测试用例。应用程序名称是“login”,我定义了以下内容:

url.py:

from django.urls import path

from .views import Index

urlpatterns = [
path('', Index.as_view(), name='index')
]

views.py:

from django.shortcuts import render
from django.views.generic import TemplateView


class Index(TemplateView):
template_name = "/login/index.html"

def get(self, request):
render(request, self.template_name, None)

加载页面时遇到问题:

TemplateDoesNotExist at /login/

index.html 位于登录应用程序文件夹中:

/login/templates/login/index.html

我在这里缺少什么概念?

最佳答案

这里有两个问题:

  1. 您不应在 template_name 中添加前导斜杠;和
  2. 您忘记指定return语句:
class Index(TemplateView):
template_name = <b>"login/index.html"</b>

def get(self, request):
<b>return</b> render(request, self.template_name, None)

话虽如此,TemplateView [Django-doc]实际上已经实现了渲染逻辑本身。它用于省略样板逻辑。

如果您想在 TemplateView 中添加上下文数据,您需要覆盖 get_context_data(…) method [Django-doc] :

class Index(TemplateView):
template_name = 'login/index.html'

def <b>get_context_data</b>(self, **kwargs):
context = super().get_context_data()
context['some_variable'] = 42
return context

我们在这里向使用模板渲染的上下文添加了一个额外的变量 some_variable

关于python - View 类中的 Django 渲染模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56515590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com