如果用户已经在Django中登录,如何从登录页面重定向?

瑞奇

我正在尝试这样做,以便当已经登录的用户访问登录页面时,他们将重定向到其帐户页面。

我决定通过拥有自己的登录视图来执行此操作,该视图可检查用户是否已登录,并重定向用户是否已登录。然后,如果他们尚未登录,它将继续使用contrib登录视图。

问题是我需要能够指定contrib登录authentication_form和template_name。直接调用login()时如何指定?

我正在运行Django 1.10.3版

这是我的代码...

urls.py

from django.conf.urls import include, url
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from Account.views import RenderLoginPage
from django.contrib.auth.views import logout

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login/$', RenderLoginPage, name='login'),
    url(r'^logout/$', logout, {'next_page': '/login'}, name='logout')  
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

views.py

from django.shortcuts import redirect
from django.urls import reverse
from django.contrib.auth.decorators import login_required
from django.contrib.auth.views import login
from forms import LoginForm

def RenderLoginPage(request):
    if request.user.is_authenticated():
        return redirect(reverse("myaccount"))
    else:
        return login(request)

那么,如何指定template_name和authentication_form?如果我直接通过URL进行操作,而没有自定义登录视图,则可以执行此操作……但是我不能,因为我需要自定义登录视图。

url(r'^login/$', login, {'template_name': 'login.html', 'authentication_form': LoginForm}, name='login'),
阿米尔·阿德南(Aamir Adnan)

不要使用基于函数的视图,而要使用基于类的视图LoginView

from django.contrib.auth.views import LoginView as DefaultLoginView

class LoginView(DefaultLoginView):
    redirect_authenticated_user = True

login = LoginView.as_view()

或者只是简单地导入基于类的视图urls.py并传递redirect_authenticated_user=True

from django.contrib.auth.views import LoginView

url(r'^login/$', LoginView.as_view(), 
    {'template_name': 'login.html', 'authentication_form': LoginForm, 'redirect_authenticated_user': True},
    name='login')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果已经在php mysql中登录用户,如何将用户重定向到配置文件页面

Django:如果用户已经登录,则从登录页面重定向用户

如果用户未登录,如何重定向到登录页面?

如果用户已经在React with JWT中登录,则限制对登录页面的访问

Joomla登录页面(如果已经登录用户)重定向到主页

如果用户已经在Angular 4中登录,如何限制对登录路由的访问?

PHP:如何检查用户是否已经登录,否则重定向到登录页面

如果用户未登录,则重定向到登录页面

如果用户未登录 wordpress,则重定向到登录页面?

如果用户登录,如何在反应中重定向

如果用户已经登录,则重定向到主页

如果用户已经登录,则在用户刷新页面时将页面重定向到React js中的仪表板页面

如果用户已经登录,如何将用户重定向到其主页?

如何重定向到jsp登录页面,如果用户还没有登录,Java servlet?

如何将用户从 django rest 框架中的中间件重定向到登录页面?

如果不登录yii框架,如何重定向登录页面?

如果用户在django中注册后首次登录,如何将用户重定向到其他页面?

如果已经通过Django网址登录,则进行重定向?

React:如果用户已经登录,如何重定向到另一个URL?

VBA - 如果站点已经在 IE 中登录,则跳过登录页面

如果用户尝试通过URL访问其他站点页面,如何在C#MVC 4.5中重定向未登录到登录页面的用户

如果用户在尝试访问 express js 中的登录路由时已经登录,我想重定向到仪表板

如果未登录,用户将被重定向到“我的帐户”页面。如果已登录,仍会重定向。缓存重定向?

进入登录页面时,如果已经登录,则重定向到索引

当他尝试进入登录页面时,使用 java spring-security 重定向已经登录的用户

已经登录后如何防止用户访问django中的登录页面?

如果用户未经授权,Spring Security如何重定向到“登录”页面

vuejs-如果已经登录,则从登录/注册重定向到主页,如果未登录,则从其他页面重定向到登录

Django:从“重置密码”页面重定向登录的用户