【问题标题】:how to send alert message from HttpResponseRedirect django如何从 HttpResponseRedirect django 发送警报消息
【发布时间】:2013-07-02 19:00:06
【问题描述】:

我在引导模式中有一个表单。 当用户提交此表单时,它会向 url(/submitform) 发送一个发布请求, /submitform 视图对数据进行处理(重新排列) 并对另一个网址执行“requests.post”。 现在取决于第二个帖子请求成功或失败。我想在 HttpResponseRedirect url 上显示警报。

代码如下:

payload= {"createRequest":
                  { "users": request.POST["newuser"],
                    "email": request.POST["newemail"]
                    }
                  }
headers =  {'content-type' : 'application/json'}
r = requests.post('http://localhost:8000/api/v1.0/newuser',
                          data=json.dumps(payload),
                          headers=headers, verify=False)

return HttpResponseRedirect("/dashboard/all_users", {"alert":r.content})

在 all_users 的视图中,它会检查警报是否存在(因为 all_users 已从其他几个不属于警报的地方调用),如果存在警报,它会将其从其 render_to_respons 发送到 html。

我无法更改 all_users url 格式,它已在很多地方使用。 如果需要更多说明,请告诉我。

我尝试过的事情:

return HttpResponseRedirect(reverse("/dashboard/all_users"), kwargs={"alert":r.content})

错误:

“/dashboard/all_users”用参数“()”和关键字反转 未找到参数“{}”。

【问题讨论】:

    标签: python django twitter-bootstrap


    【解决方案1】:

    在您的模板中,您可以:

    <script type="text/javascript">
     $(function(){
       {% if alert %}
          //whatever conditions and js code
          alert('{{alert}}');
       {% endif %}
     });
    </script>
    

    在视图中,使用redirect 而不是HttpResponseRedirect

    return redirect(reverse("/dashboard/all_users"), {"alert":r.content})
    

    【讨论】:

    • 感谢您的回复 - 我已经有类似的条件来检查模板中是否存在警报。这里的问题是它没有通过 HttpResponseRedirect 传递参数(警报)。
    • NoReverseMatch at /dashboard/all_users/newuserform Reverse for '/dashboard/all_users' with arguments '()' and keyword arguments '{}' not found.
    • 看起来 URL 解析不正确。检查网址格式。它是一个有效的 URL 吗?
    • url(r'^/dashboard/all_users$', DashboardUserListView.as_view(), name="DashboardUser"),
    • 如果是 url 的扩展,我猜是,需要删除前导的 /。您可以直接在浏览器中访问此网址吗?
    猜你喜欢
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2015-07-31
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    相关资源
    最近更新 更多