如何解决模板不存在,即使一切正常,也不起作用
我不知道我的错误在哪里,以确保我的代码正确无误 view.py:
from django.http import HttpResponse
from .models import Task
from django.template import loader
from django.template.response import TemplateResponse
def index(request):
list_task = Task.objects.all()
template = loader.get_template('new2/index.html')
context = {
'list_task': list_task
}
return HttpResponse(template.render(request,context))
models.py
from django.db import models
class Task(models.Model):
Name_task = models.CharField(max_length=200)
Age_task = models.CharField(max_length=200)
index.html:
{% if list_task %}
<ul>
{% for i in list_task %}
<li>
<a href="#">{{i.Name_task}}</a>
</li>
{% endfor %}
</ul>
{% else %}
{% endif %}
urls.py:
from django.contrib import admin
from django.urls import path
from new2 import views
urlpatterns = (
# path('admin/',admin.site.urls),path('',views.index,name='index'),
我在setting.py中尝试了以下代码:
'DIRS': [os.path.join(BASE_DIR,'todoapp')],
,这也适用于模板位置,但仍然无效:
'DIRS': [r'C:\Users\hajar\Downloads\new\new1\new2\template'],
模板的路径是:
C:\Users\hajar\Downloads\new\new1\new2\template\new2\index.html
任何人都可以给我3天的解决方案
错误:
上下文必须是字典而不是WSGIRequest。 和模板不存在
谢谢
解决方法
问题“ 上下文必须是字典而不是WSGIRequest ”,这并不意味着您加载了错误的模板,而是意味着您将上下文作为字典传递,而不是{{3} },您应该使用:
from django.http import HttpResponse
from .models import Task
from django.template import loader,RequestContext
from django.template.response import TemplateResponse
def index(request):
list_task = Task.objects.all()
template = loader.get_template('new2/index.html')
context = {
'list_task': list_task
}
return HttpResponse(template.render(RequestContext(request,context)))
但是您可能想使用RequestContext
[Django-doc]。这删除了很多样板代码:
from .models import Task
from django.shortcuts import render
def index(request):
list_task = Task.objects.all()
context = {
'list_task': list_task
}
return render(request,'new2/index.html',context)
因此,这将加载模板,创建RequestContext
,并将渲染的模板包装在HttpResponse
中。
尝试改用render()并将'todoapp'
替换为'templates'
,如:
'DIRS': [os.path.join(BASE_DIR,'templates')],
并在setting.py ...中打印出DIRS TEMPLATES[0]['DIRS']
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。