【问题标题】:Is it possible to pass template context variable as a parameter in a redirect() call是否可以在重定向()调用中将模板上下文变量作为参数传递
【发布时间】:2020-01-27 00:23:06
【问题描述】:

我正在建立一个工作委员会。这个项目有一个post_job 视图。成功发布工作后,用户将被重定向到dashboard 视图(显示所有帖子列表的页面)。

def post_job(request):
   # ... 
   return redirect('dashboard')

有没有办法将额外的上下文变量传递给dashboard.html 模板。即:

return redirect('dashboard', {'success': True})

这样我就可以在dashboard.html文件中说:

{% if success %}
  Your job has been posted successfully.
{% endif %}

感谢您的帮助。

【问题讨论】:

    标签: django django-views


    【解决方案1】:

    重定向不能接受上下文变量——“正常”的做法是在发布时将 jon 标记为“新”。在“仪表板”视图中以不同方式处理新工作 - 例如,如果有任何新工作,您可以安排显示成功消息 - 并将工作从“新”更新为“打开”。

    这就是我会做的。

    【讨论】:

      【解决方案2】:

      重定向返回一个HTTP 302 响应,它只是告诉浏览器下一步要去哪里。您可以做的是将您需要的数据存储在您的会话中并在您的仪表板视图中访问它,例如:

      def post_job(request):
          ...
          request.session['success'] = True
          return redirect('dashboard')
      
      def dashboard(request):
          success = request.session.pop('success', False)
          return render(request, 'dashboard.html', context={'success': success})
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-24
        • 2020-02-23
        • 1970-01-01
        • 1970-01-01
        • 2017-07-08
        • 1970-01-01
        相关资源
        最近更新 更多