首页 文章

为什么Django在使用@login_required装饰时有太多的登录重定向?

提问于
浏览
2

我已经搜索了类似问题和问题的答案 . 我希望在通过django-allauth视图进行身份验证后显示主页 . 但是为什么在使用@login_required装饰时我有太多登录重定向?“你能解释一下吗?原因和重定向循环的解决方案?重定向循环的代码是HTTP / 1.1''302 .

我从Django文档中查了一下

@login_required装饰器执行以下操作:

  • 如果用户未登录,则重定向到/ accounts / login /,将查询字符串中的当前绝对URL作为下一个传递,例如:/ accounts / login /?next = / polls / 3 / .

  • 如果用户已登录,请正常执行视图 . 然后,视图代码可以假定用户已登录 .

我希望经过身份验证的用户可以转到主页,同时将未登录的用户重定向到帐户/登录页面 .

我的settings.py的一部分:

LOGIN_URL='/accounts/login/'
LOGIN_REDIRECT_URL='/'

我的views.py:

from django.shortcuts import render
from django.template import RequestContext
from django.contrib.auth.decorators import login_required
# Create your views here.
@login_required
def home(request):
    context={}
    template='home.html'
    return render(request, template,context)

我的urls.py:

from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import url, include
from django.contrib import admin   
from profiles import views as profiles_views

urlpatterns=[
url(r'^admin/',admin.site.urls),
url(r'$',profiles_views.home,name='home'),
url(r'^accounts/',include('allauth.urls')),

1 回答

  • 4

    问题出在你的urls.py中 .

    你没有把 "^" 标记为行的开头 .

    尝试,

    urlpatterns=[
        url(r'^admin/',admin.site.urls),
        url(r'^$',profiles_views.home,name='home'),
        url(r'^accounts/',include('allauth.urls')),
    ]
    

相关问题