【问题标题】:Django how to preserve request body across redirects?Django如何跨重定向保留请求正文?
【发布时间】:2019-12-16 06:12:36
【问题描述】:

我有这样的看法:

class ConfirmCancellationView(View):
    def post(self, request):
        #has request.foo - the thing to cancel
        return render(request, "confirm_cancellation.html")

此视图的 html:

<form method="post" action="{% url 'cancel_entry' %}">
    {% csrf_token %}
    <button class="btn--primary" type="submit" id="cancel">Yes, cancel instruction</button>
</form>

问题是,虽然我的 ConfirmCancellation 有我想要取消的信息(在代码中称为 foo),但 SAME 请求并未传递给我的 cancel_entry 视图。它抱怨foo 不是属性...

如何将包含foo 的相同请求传递到重定向网址?

【问题讨论】:

  • cancel_entry 视图是什么?重定向在哪里?

标签: django forms django-views


【解决方案1】:

您可以使用context 将数据传递给您的模板:

# your view
class ConfirmCancellationView(View):
    def post(self, request):
        context = {
            "foo": request.foo
        }
        return render(request, "confirm_cancellation.html", context)

【讨论】:

  • 非常感谢!只是想知道,当我重定向到 cancel_entry 时,请求正文中会出现这个上下文吗?
  • 另外我担心的是“foo”是一个非常敏感的变量...我不太希望它暴露在代码中
  • 如果在渲染cancel_entry时传递相同的上下文,则可以这样做,例如:render(request, "cancel_entry.html", context)
  • 在渲染 html 模板时将 foo 放在上下文中是安全的。只是不要在视图之间传递foo
猜你喜欢
  • 1970-01-01
  • 2012-06-20
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 2012-12-02
  • 1970-01-01
相关资源
最近更新 更多