Python django login_需要decorator,始终重定向到登录页面,即使在登录之后也是如此

Python django login_需要decorator,始终重定向到登录页面,即使在登录之后也是如此,python,django,python-3.x,Python,Django,Python 3.x,views.py中的代码 def custom_login(request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if use

views.py中的代码

def custom_login(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)            
            return redirect('main')
        else:
            return redirect('login')
    else:
        user = AuthenticationForm()
        return render(request, 'index.html', {'form': user})

@login_required
def main(request):
    return render(request, 'main.html')
url.py

urlpatters =[url(r'^$', views.custom_login, name='login'),
url(r'^main', views.main, name='main')]
在settings.py中

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',]

LOGIN_URL = 'login'
LOGIN_REDIRECT_URL = 'main'
若我并没有将登录所需的装饰器放在main上,我就能够重定向到main。但如果我使用login_required decorator,在使用URL
登录后,我会被重定向回登录页面http://localhost:9000/sample_app/?next=/sample_app/main
我正在使用python3和django

更新 我犯了一个愚蠢的错误,在我的设置中启用了这些设置。
SESSION\u COOKIE\u SECURE=True

CSRF\u COOKIE\u SECURE=True

拒绝了正常的http请求。但它使用SSL工作,可能会出现错误。 =>您的用户是否处于活动状态?如果没有,请尝试激活该帐户

=>尝试使用电子邮件进行身份验证,例如

user2=None

   try:
        user2=User.objects.get(username=username) # filter.first should do same
    except:
        pass
    user = authenticate(username=username, password=password)
    if user is None and user2 is not None:
        user = authenticate(username=user2.email,password=password)
=>尝试处理“下一个”参数


希望这对您有所帮助。

我认为您的用户处于非活动状态,即您正在使用的身份验证方法。


验证方法检查用户是否处于活动状态。如果用户未处于活动状态,则返回无;如果用户处于活动状态,则返回用户实例。

您需要在视图中更改此行

user = authenticate(request, username=username, password=password) 
对,


我犯了一个愚蠢的错误,在我的设置中启用了这些设置

SESSION\u COOKIE\u SECURE=True

CSRF\u COOKIE\u SECURE=True


拒绝了正常的http请求。禁用它可以在http中工作。但是它使用SSL工作

用户不是无
正在实现,只是登录\u reuired decorator将其重定向回登录您建议的
验证
功能更改无效当您使用模板中的提交按钮发布数据时,终端上显示了什么,我是说服务器运行的位置??你能证明一下吗?你的URL是否使用了名称空间??能否显示项目url.pyurlpatterns=[url(r'^admin/',admin.site.url),url(r'^sample\u app/',include('sample\u app.url'),]在表中,
处于活动状态
字段设置为
1
我将使用
@login\u required(重定向\u field\u name=None
)抑制下一个参数。重定向后不会显示下一个参数
user = authenticate(username=username, password=password)