403之后呈现的Django模板变量

gk7wooem  于 2023-05-19  发布在  Go
关注(0)|答案(1)|浏览(122)

我有一个HTML模板,将根据上下文变量呈现按钮。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post">
  {% csrf_token %}
  <button type="submit">{{ number }}</button>
</form>

</body>
</html>

在通过“if”检查大于400的数字之后,函数应该返回响应403并停止。但在我的例子中,它只是忽略了一个模板,仍然呈现了一个上下文变量。

def run_script(request, number):
    if number > 400:
        return HttpResponseForbidden()
    context = {'number': number}
    return render(request, "mainapp/number.html", context)

我找到的唯一解决方案是在“if”语句中将呈现的值设置为null

if number > 400:
        number = None
        return HttpResponseForbidden()

这样我就得到了正确的响应403,但我不喜欢这种方法,因为它需要改变每个变量,当提供多个变量时,看起来不像是一个正确的实现。如何正确停止执行响应403?

qxgroojn

qxgroojn1#

ChatGPT建议使用

return HttpResponse(content_type='text/html', content=render_to_string('mainapp/number.html', context))

由于这是目前的工作,我会坚持下去,但我并不意味着这是完美的解决方案,由于它的来源。

相关问题