render_to_string出错,而渲染有效

时间:2019-03-16 07:58:00

标签: python ajax django django-templates

我正在尝试将响应返回给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,但这没有用。我不明白为什么一个渲染方法可以拾取模板,而另一个不能。

1 个答案:

答案 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