为啥Django在使用@login_required装饰器时有太多的登录重定向?
Posted
技术标签:
【中文标题】为啥Django在使用@login_required装饰器时有太多的登录重定向?【英文标题】:Why do Django have too many login redirects when using @login_required decorator?为什么Django在使用@login_required装饰器时有太多的登录重定向? 【发布时间】:2017-10-21 02:43:44 【问题描述】:我已经为这个问题搜索了类似的问题和答案。我希望在 django-allauth 视图进行身份验证后显示主页。但是为什么在使用 @login_required 装饰器时我的登录重定向太多了?”你能请解释一下重定向循环的原因和解决方法?重定向循环的代码是HTTP/1.1'' 302。
我从 Django 文档中查找
如果用户没有登录,重定向到/accounts/login/,通过 查询字符串中的当前绝对 URL 为 next,对于 例如:/accounts/login/?next=/polls/3/。 如果用户已登录,则正常执行视图。风景 然后代码可以假设用户已登录。@login_required 装饰器执行以下操作:
我希望经过身份验证的用户继续访问主页,同时将未登录的用户重定向到帐户/登录页面。
我的部分 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】:问题出在您的 urls.py 中。
你没有放 "^",它标志着行的开始。
试试,
urlpatterns=[
url(r'^admin/',admin.site.urls),
url(r'^$',profiles_views.home,name='home'),
url(r'^accounts/',include('allauth.urls')),
]
【讨论】:
以上是关于为啥Django在使用@login_required装饰器时有太多的登录重定向?的主要内容,如果未能解决你的问题,请参考以下文章
Django:使用@login_required 在视图上测试失败
Django @login_required 删除 https
使用Django自带的登录访问限制login_required