当前位置: 首页 > 面试题库 >

Django:登录后重定向到上一页

党建义
2023-03-14
问题内容

我正在尝试建立一个简单的网站,其登录功能与SO上的登录功能非常相似。用户应该能够以匿名用户的身份浏览网站,并且每个页面上都会有一个登录链接。当单击登录链接时,用户将被带到登录表单。成功登录后,应将用户带回到他首先单击登录链接的页面。我猜想我必须以某种方式将当前页面的url传递给处理登录表单的视图,但是我真的无法使其正常工作。

编辑:我想通了。我通过将当前页面作为GET参数传递来链接到登录表单,然后使用“下一个”重定向到该页面。谢谢!

编辑2:我的解释似乎不清楚,所以这里要求的是我的代码:假设我们在foo.html页面上,并且没有登录。现在我们想在foo.html上建立一个链接登录。我们可以在那里登录,然后将其重定向回foo.html。foo.html上的链接如下所示:

      <a href='/login/?next={{ request.path }}'>Login</a> 

现在,我编写了一个自定义登录视图,看起来像这样:

def login_view(request):
   redirect_to = request.REQUEST.get('next', '')
   if request.method=='POST':
      #create login form...
      if valid login credentials have been entered:
         return HttpResponseRedirect(redirect_to)  
   #...
   return render_to_response('login.html', locals())

还有login.html中的重要一行:

<form method="post" action="./?next={{ redirect_to }}">

是的,就这样,希望可以弄清楚。


问题答案:

你无需为此额外查看,该功能已内置。

首先,每个具有登录链接的页面都需要知道当前路径,最简单的方法是将请求上下文前置变量添加到settings.py(默认为前四个),然后在每个请求中都可以使用请求对象:

settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.request",
)

然后添加你想要“登录”链接的模板:

base.html:

<a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">Login</a>

这会将GET参数添加到登录页面,该参数指向当前页面。

然后,登录模板可以像这样简单:

registration / login.html:

{% block content %}
<form method="post" action="">
  {{form.as_p}}
<input type="submit" value="Login">
</form>
{% endblock %}


 类似资料:
  • 在Woocommerce for WordPress上,当您在产品页面上单击登录时,当您登录时,您将从您的帐户重定向到仪表板页面,而不是之前阅读的页面。 我正在尝试这样做,在登录前重定向到上一页,如果我的站点上没有上一页,则重定向到主页。 我已经试过了,但每次我都被重定向到主页。 有什么想法吗?

  • 问题内容: 我一直在寻找解决方案,但无论尝试如何,似乎都无法正确解决。 成功登录后,应该将用户重定向到他来自的页面,假设他一直在浏览帖子,并且想要登录以便可以发表评论,因此应该将他重定向到他正在浏览的帖子。所以这是我所拥有的: login.php 显示登录表单: 在 登录-check.php 检查用户名和传球被输入,的确用户存在,或者如果他已经登录,并且参数发送给login.php中: 然后将参数

  • 我正在处理一项要求,即在记录更新/插入后发送电子邮件,其中我将页面URL作为“单击此处”文本发送,当用户单击该链接时,无论用户是否登录,他都将被重定向到该页面。 现在,如果用户已经登录,则该页面将正常打开,但如果用户未登录,则需要在登录后重定向回上一页。 我的问题在这里是我无法重定向回上一页用户试图访问之前登录通过点击这里链接从电子邮件 我已经找到了一些解决方案,但它们都不起作用。我尝试过的解决方

  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

  • 这是views.py的内容: 在转到“/”时,我被重定向到“/accounts/login”,它将我带到登录页面。我输入用户名和密码后,在“验证”打印语句printd“登录”到终端。 到目前为止还不错。现在,我不再被重定向到“/”,而是再次被重定向到“/accounts/login”,并再次显示输入用户名和密码的页面。为什么?

  • 问题内容: 我知道之前曾有人问过这个问题,但是我在这里面临一个特殊的问题。 我使用Spring Security 3.1.3。 我的Web应用程序中有3种可能的登录案例: 通过登录页面登录:确定。 通过受限页面登录:也可以。 通过非受限页面登录:不好,…每个人都可以访问“产品”页面,并且用户可以在登录后发表评论。因此,同一页面中包含一个登录表单,以允许用户进行连接。 情况3)的问题是我无法设法将用