gpt4 book ai didi

python - 使用 render_to_string 时填充 {% csrf_token %}?

转载 作者:太空宇宙 更新时间:2023-11-04 08:18:14 27 4
gpt4 key购买 nike

我需要使用render_to_string,但是我不能使用

@csrf_protect

并通过

context_instance=RequestContext(request)) 

到 render_to_string,因为我认为装饰器期待的是 HttpResponse,而不是 SafeString。

如何将 csrf_token 放入我的字符串中?

'NoneType' object has no attribute 'COOKIES'

编辑:感谢您的评论,这里有一些澄清:

我正在创建一个“面板”系统,类似于“portlets”,其中面板在数据库中配置(包括将面板呈现为字符串的 python 函数的名称 - 面板函数在运行时从它们的导入数据库中的名称)。

为了将这些面板放入页面中,我创建了一个自定义模板标签,它从数据库中读取所需面板的名称,将它们呈现为字符串,然后返回一大块 html(作为字符串)到正在呈现的页面。 (这允许用户选择为他们显示哪些面板。)

我的问题是其中一个面板(使用 render_to_string 将模板呈现为字符串的简单 python 函数)中有一个表单。

我需要将 CSRF 字段插入该表单,因为它被呈现为字符串。

最佳答案

我已经解决了这个问题,但我仍然非常想要一个好的解决方案。

面板功能现在看起来像:

def render_to_s(request, *args, **kwargs):
panelDisplays = PanelDisplay.listAll()
csrf_token_value = request.COOKIES['csrftoken']

c = {"panelDisplays": panelDisplays, "csrf_token_value": csrf_token_value}
return render_to_string('panels/config.html', c)

虽然模板现在包括:

<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='{{ csrf_token_value }}'/></div>

关于python - 使用 render_to_string 时填充 {% csrf_token %}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10354352/

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