0

我目前正在开发一个模式登录框,它可以在不重新加载页面的情况下提交和处理登录请求。登录成功后,有两种可能的结果:

  1. 用户想事先点击一个链接,该链接仅供登录用户访问:用户在登录后被重定向到该页面

  2. 用户单击了一个触发 AJAX 调用的元素,该调用只有登录用户才能访问:登录后再次触发 ajax 调用

模板

{% load url from future %}
<form action="{% url 'login' %}" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Login" />
</form>

现在,我不知道该怎么做。我的主要问题是确定登录后需要处理哪个 URL。成功登录后,我如何知道哪个 URL 当前在队列中等待处理?

4

1 回答 1

1

当您被重定向到登录页面时,通常会在请求中传递下一个参数。对于 ajax 请求也是如此。您只需在表单中添加一个隐藏的输入字段,即可将“next”参数与未登录用户尝试获取的 url 一起传递:

{% load url from future %}
<form action="{% url 'login' %}" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Login" />
<input style="hidden" name="next" value="some_url">
</form>

然后,标准登录视图将返回一个 HttpResponseRedirect,对于您的类似 ajax 的登录,这不是您想要的。因此,您必须自己编写登录视图并覆盖该行为。

于 2012-05-21T10:58:46.373 回答