我最近試圖開發一個使用Django的網站,其中一個人可以在系統中進行他/她的註冊,但是他/她不應該被允許在管理員批准請求之前登錄系統。我嘗試了user.is_active字段,但它唯一做的是阻止新用戶以管理員身份訪問。換句話說,系統允許他/她登錄系統。我的代碼如下:Django:不允許新創建的用戶登錄,直到他/她被管理員批准爲止。
# create a new user but he will be inactive until admin's approval
user = User.objects.create_user(username=username, password=password)
user.is_active = False
改變用戶的IS_ACTIVE領域爲False我嘗試使用新的用戶的用戶名和密碼登錄系統並在系統中讓我後,這是我的代碼登錄:
def login(request):
context = RequestContext(request)
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = auth.authenticate(username = username, password = password)
if user is not None and request.user.is_active:
auth.login(request, user)
print 'login'
print request.user.username
print request.user.is_active
return redirect('app.views.results')
else:
print 'no login'
return render(request, 'login.html')
當我打印用戶的用戶名和is_active字段時,我看到「is_active」字段是True而不是False。代碼有問題,或者我錯過了什麼? 解決問題的任何更好的方法也將受到歡迎和讚賞。
你確定你保存IS_ACTIVE設置爲false後的用戶? –
另請注意,用戶將不會在request.user中,直到*調用auth.login之後;你應該檢查'user.is_active'。 –
謝謝@DanielRoseman問題是我沒有保存用戶。是的,你提到的有關用戶的第二件事,而不是request.user也是正確的。我解決了這個問題,它似乎工作正常。 – TheoPsal