簡體   English   中英

Django的。 身份驗證(用戶返回無)

[英]Django. Authentication (user returns None)

我正在嘗試使用Django創建登錄表單。 所以我在視圖中創建了一個函數,它看起來像這樣:

def signin(request):
    if request.method == 'POST':
        form = SigninForm(request.POST)
        if form.is_valid():
            login = request.POST.get('login', '')
            password = request.POST.get('password', '')
            user = auth.authenticate(username=login, password=password)
            print(user)
            if user is not None and user.is_active:
                auth.login(request, user)
                return HttpResponse("OK")
            else:
                return HttpResponse("ERROR")
    else:
        form = SigninForm()     
    return render(request, 'signin.html', {'form': form})

並且可以正常工作(打印OKprint(user)返回print(user)名),但僅適用於在執行syncdb (超級用戶)時創建的用戶。

但是,當我嘗試創建這樣的用戶時:

def signup(request):
    if request.method == 'POST':
        form = SignupForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/')
    else:
        form = SignupForm()
    return render(request, 'signup.html', {'form': form})

當我嘗試登錄時它會打印ERROR ,並且print(user)返回None

聚苯乙烯

  • 我在我的settings.py添加了: AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', )
  • 我可以在管理頁面中看到通過注冊功能創建的用戶(看起來就像超級用戶一樣)

我不知道我在做什么錯。 你能幫我嗎?

當您使用create_user函數作為

User.objects.create_user(用戶名='用戶名',密碼='密碼')

,您無需先進行密碼加密。

它將被設為自動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM