我在这里有这个观点:
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect, HttpResponse
from django.urls import reverse
from django.template import loader
from django.views.generic import ListView
class IndexView(ListView):
def get(self, request):
template_name = loader.get_template('home/blog.html')
return render(request, template_name)
return HttpResponse(template_name.render(request))
因此,如果我删除返回渲染(request,template_name)一切都会正常工作但现在当我尝试使用返回渲染(request,template_name)时,我得到了这些错误:
<django.template.backends.django.Template object at 0x7f13916f46d8>
Django试图找到模板的地方:
django.template.loaders.app_directories.Loader: /home/marton/documents/github/fmi-fall-2016/django/click_bait/miranda/home/templates/<django.template.backends.django.Template object at 0x7f13916f46d8> (Source does not exist)
django.template.loaders.app_directories.Loader: /home/marton/documents/github/fmi-fall-2016/django/click_bait/env/lib/python3.4/site-packages/django/contrib/admin/templates/<django.template.backends.django.Template object at 0x7f13916f46d8> (Source does not exist)
django.template.loaders.app_directories.Loader: /home/marton/documents/github/fmi-fall-2016/django/click_bait/env/lib/python3.4/site-packages/django/contrib/auth/templates/<django.template.backends.django.Template object at 0x7f13916f46d8> (Source does not exist)
我该怎么办?现在是时候说我已经启动了这个项目我半小时前因路径有问题Django正在我的虚拟环境文件夹中搜索。
答案 0 :(得分:0)
你在这里误解了一些事情。加载器返回模板对象,而不是模板名称。你根本不需要拨打loader.get_template
的电话;您将模板路径直接传递给渲染:
return render(request, 'home/blog.html')
答案 1 :(得分:0)
那是因为template_name
应该是一个字符串。
它不是,它是模板加载器的返回。
你应该直接通过'home / blog.html&#39;作为render()调用的template_name。
但是使用ListView,我建议您直接使用template_name
属性。
这样:
class IndexView(ListView):
template_name = 'home/blog.html'
#[...]