Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 谷歌和美国在线等网站如何阻止用户在登录后访问登录表单?_Python_Django_Forms - Fatal编程技术网

Python 谷歌和美国在线等网站如何阻止用户在登录后访问登录表单?

Python 谷歌和美国在线等网站如何阻止用户在登录后访问登录表单?,python,django,forms,Python,Django,Forms,我正在尝试实现一个登录(Django)表单,理想情况下,用户登录后不应该看到该表单。当我按下浏览器的“后退”按钮时,问题就出现了。由于按钮的作用类似于一个堆栈,它会立即弹出上一页而不发出任何请求(如果我无法收到请求,我想我将无法将用户重定向到所需的页面)。不知道怎么做,但谷歌和美国在线都能阻止这种情况。有什么想法吗?查看: def登录(请求): 如果request.user.u经过身份验证: 返回重定向(“/”) 如果用户已通过身份验证(登录),则重定向到主页;如果用户未通过身份验证,则重定向

我正在尝试实现一个登录(Django)表单,理想情况下,用户登录后不应该看到该表单。当我按下浏览器的“后退”按钮时,问题就出现了。由于按钮的作用类似于一个堆栈,它会立即弹出上一页而不发出任何请求(如果我无法收到请求,我想我将无法将用户重定向到所需的页面)。不知道怎么做,但谷歌和美国在线都能阻止这种情况。有什么想法吗?

查看:

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}}
的东西访问会话。您还需要添加一个上下文处理器。让我去找。嗯,它看起来像是会话的上下文处理器,现在在默认设置中。是的。您是对的,它现在出现在默认设置中