首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >登录用户仍然可以看到登录页面(django auth)

登录用户仍然可以看到登录页面(django auth)
EN

Stack Overflow用户
提问于 2014-04-08 19:28:07
回答 6查看 5.7K关注 0票数 6

在django项目中,我使用django.contrib.auth来处理用户身份验证。为了登录,我有

代码语言:javascript
复制
from django.contrib.auth.views import login, logout

# ...

url(r'^login/', login, name='login'),
url(r'^logout/', logout, {'next_page': '/'}, name='logout'),

在我的主要项目urls.py中。

到现在为止还好。但是,我注意到,登录后,如果我访问/login/,我仍然会看到登录页面,并且能够以另一个用户的身份登录。这似乎是违反直觉的行为-大多数网站会显示错误或重定向你的主页,如果你试图访问登录页面时登录。

--我正在使用内置的模型/视图,据我所知,我没有一种简单的方法来更改视图。是否有一种简单的方法来获得此功能(即,如果登录就阻止对登录表单的访问),还是仅仅修改模板以仅显示表单(如果没有登录)的最佳方式?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-04-08 22:16:46

template.html中使用templateTags隐藏内容,如下所示:

代码语言:javascript
复制
{% if user.is_authenticated %}
  <p>Only a logged in User can view</p>
{% else %}
  <p>Only a logged out User can view</p>
{% endif %}

编辑

如果要在呈现网页之前重定向用户,则可以在视图中这样做。

代码语言:javascript
复制
def myView(request):
    if request.user.is_authenticated:
        return render(request, 'logged_in_view.html')
    else:
        return render(request, 'logged_out_view.html')
票数 6
EN

Stack Overflow用户

发布于 2020-01-30 10:43:07

您只需编写登录url,如下所示:

代码语言:javascript
复制
from django.contrib.auth import views as auth_views

path('login/', auth_views.LoginView.as_view(template_name="accounts/login.html", redirect_authenticated_user=True), name='login'),
票数 9
EN

Stack Overflow用户

发布于 2017-04-01 13:26:05

可能的解决方案:我创建'my_login':

代码语言:javascript
复制
def my_login(request):
    if request.user.is_authenticated():
        return redirect(#...home)
    else:
        return login(request, 'template/login.html') # here i used login built-in function
                                                     # instead of using directly in urls.py

我在urls.py中使用了urls.py视图而不是'django.contrib.auth.views.login'

编辑

代码语言:javascript
复制
New in Django 1.10:
The redirect_authenticated_user parameter was added.

检查https://docs.djangoproject.com/en/1.10/topics/auth/default/#django.contrib.auth.views.login

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22946446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档