Python 谷歌和美国在线等网站如何阻止用户在登录后访问登录表单?
我正在尝试实现一个登录(Django)表单,理想情况下,用户登录后不应该看到该表单。当我按下浏览器的“后退”按钮时,问题就出现了。由于按钮的作用类似于一个堆栈,它会立即弹出上一页而不发出任何请求(如果我无法收到请求,我想我将无法将用户重定向到所需的页面)。不知道怎么做,但谷歌和美国在线都能阻止这种情况。有什么想法吗?查看:Python 谷歌和美国在线等网站如何阻止用户在登录后访问登录表单?,python,django,forms,Python,Django,Forms,我正在尝试实现一个登录(Django)表单,理想情况下,用户登录后不应该看到该表单。当我按下浏览器的“后退”按钮时,问题就出现了。由于按钮的作用类似于一个堆栈,它会立即弹出上一页而不发出任何请求(如果我无法收到请求,我想我将无法将用户重定向到所需的页面)。不知道怎么做,但谷歌和美国在线都能阻止这种情况。有什么想法吗?查看: def登录(请求): 如果request.user.u经过身份验证: 返回重定向(“/”) 如果用户已通过身份验证(登录),则重定向到主页;如果用户未通过身份验证,则重定向
def登录(请求):
如果request.user.u经过身份验证:
返回重定向(“/”)
如果用户已通过身份验证(登录),则重定向到主页;如果用户未通过身份验证,则重定向到主页。查看:
def登录(请求):
如果request.user.u经过身份验证:
返回重定向(“/”)
如果用户已通过身份验证(登录),则重定向到主页;如果用户未通过身份验证,则重定向到主页。我对Django执行的上一个项目要求它明确显示用户已登录。所以我在前端做了。它也可以用于您的目的
{% if user.is_authenticated %}
<p>You are already logged in. <a href="{% url 'home' %}"> Go to the home page.</a></p>
{% else %}
<h2>Login</h2>
<div style="width:50%;">
<form method="post">
{% csrf_token %}
{{ form|crispy }}
<button class="btn" type="submit">Sign In</button>
</form>
</div>
<p>Not yet a member? <a href="{% url 'accounts:signup' %}?next={{request.GET.next}}"> Sign Up</a>. Forgot your password?
<a href="{% url 'password_reset' %}">Reset it here.</a></p>
{% endif %}
{%if user.u经过身份验证%}
您已登录
{%else%}
登录
{%csrf_令牌%}
{{form | crispy}}
登录
还不是会员吗。忘记密码了?
{%endif%}
我用Django做的上一个项目要求它明确地向用户显示他们已经登录。所以我在前端做了。它也可以用于您的目的
{% if user.is_authenticated %}
<p>You are already logged in. <a href="{% url 'home' %}"> Go to the home page.</a></p>
{% else %}
<h2>Login</h2>
<div style="width:50%;">
<form method="post">
{% csrf_token %}
{{ form|crispy }}
<button class="btn" type="submit">Sign In</button>
</form>
</div>
<p>Not yet a member? <a href="{% url 'accounts:signup' %}?next={{request.GET.next}}"> Sign Up</a>. Forgot your password?
<a href="{% url 'password_reset' %}">Reset it here.</a></p>
{% endif %}
{%if user.u经过身份验证%}
您已登录
{%else%}
登录
{%csrf_令牌%}
{{form | crispy}}
登录
还不是会员吗。忘记密码了?
{%endif%}
request.user.中的此.user已通过身份验证。这是django用户模型吗?否,它是我们定义的请求
参数的一部分。您能否提供一个示例,说明如何设置用户参数,或在哪里设置?请求。用户
可以是您的设置的一个实例。AUTH\u用户模型(默认情况下为django.contrib.AUTH.models.user)如果用户已登录或可以是匿名用户
,请不要使用模型创建自定义用户模型。模型
,使用AbstractBaseUser
创建它,请选中此处:请求中的此.user.user已通过身份验证。这是django用户模型吗?否,它是我们定义的请求
参数的一部分。您能否提供一个示例,说明如何设置用户参数,或在哪里设置?请求。用户
可以是您的设置的一个实例。AUTH\u用户模型(默认情况下为django.contrib.AUTH.models.user)如果用户已登录或可以是匿名用户
请不要使用模型创建自定义用户模型。模型
,使用AbstractBaseUser
创建它,检查此处:而不是使用user.is_authenticated方法我正在使用会话密钥查看用户是否已登录。有没有办法在HTML中访问它?如果是,请告诉我?会话密钥工作正常。每当用户尝试重新输入其凭据时,都会重定向到详细信息页面。这可以防止重复登录。现在,根据您所说的,我只需要查看会话密钥是否存在,以通知用户是否已经登录in@Moaz_是的,您可以使用类似于{{request.session.key}}
的东西访问会话。您还需要添加一个上下文处理器。让我去找。嗯,它看起来像是会话的上下文处理器,现在在默认设置中。是的。您是对的,它现在出现在默认设置中,而不是使用user.is_authenticated方法。我正在使用会话密钥查看用户是否已登录。有没有办法在HTML中访问它?如果是,请告诉我?会话密钥工作正常。每当用户尝试重新输入其凭据时,都会重定向到详细信息页面。这可以防止重复登录。现在,根据您所说的,我只需要查看会话密钥是否存在,以通知用户是否已经登录in@Moaz_是的,您可以使用类似于{{request.session.key}}
的东西访问会话。您还需要添加一个上下文处理器。让我去找。嗯,它看起来像是会话的上下文处理器,现在在默认设置中。是的。您是对的,它现在出现在默认设置中