我正在尝试将响应返回给Ajaz请求。在python代码中可以到达该视图,但是如果我尝试使用render_to_string将响应呈现为字符串,则会收到错误消息:
django.template.exceptions.TemplateDoesNotExist:
如果我使用相同的参数运行render方法,则不会出错。每个代码看起来像:
html = render_to_string(request, 'planner/viewconnections.html', { 'routes' : routelist })
render(request, 'planner/viewconnections.html', { 'routes' : routelist })
很明显,第一个是我要运行的文件,因此我可以将原始html返回AJAX成功函数。
settings.py中我的模板配置如下:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
我尝试如下添加模板目录,但是仍然出现相同的错误。
ROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname((__file__)),".."))
# Other settings...
TEMPLATE_DIRS = (
os.path.join(PROJECT_ROOT, "planner/templates"),
)
有人可以帮忙吗?我对这个问题的搜索使我可以在设置中添加TEMPLATE_DIRS,但这没有用。我不明白为什么一个渲染方法可以拾取模板,而另一个不能。
答案 0 :(得分:1)
在django render_to_string 请求中不需要参数
语法
render_to_string(template_name, context=None, request=None, using=None)
html = render_to_string('planner/viewconnections.html', { 'routes' : routelist })
请参阅此https://docs.djangoproject.com/en/2.1/topics/templates/#django.template.loader.render_to_string