![](/img/trans.png)
[英]Clean way to allow django users to login the admin and create new users?
[英]Is there a way to register new users with Django registration templates that would prevent them from logging in until admin has manually reviewed?
我正在一個項目中的Django中處理登錄/注冊視圖,該項目要求管理員在用戶可以實際登錄之前手動查看該應用程序...同時保存他們在注冊頁面上提供的信息。
過去,我沒有需要管理員手動檢查用戶的項目。
def register(request):
if request.method == "POST":
form = UserCreationForm(request.POST)
if form.is_valid():
new_user = form.save()
login(request, new_user)
return index(request)
else:
form = UserCreationForm()
return render(request, "registration/register.html", {"form": form})
這就是我通常會寫的東西...但是即使我不包括login(request,new_user),new_user也可以在創建new_user之后自己這樣做...
我需要確保在管理員手動查看他的申請加入之前,他們仍然無法登錄。
Django有一個半內置的方法可以做到這一點。 假設您使用的是默認身份驗證后端,請使用user.is_active
(幾乎可以肯定的是,如果您不確定那是什么)。
new_user.refresh_from_db()
new_user.is_active = False
new_user.save()
只需在new_user = form.save()
之后添加這三行
def register(request):
if request.method == "POST":
form = UserCreationForm(request.POST)
if form.is_valid():
new_user = form.save()
new_user.refresh_from_db()
new_user.is_active = False
new_user.save()
return HttpRequest("Thank you for signing up. Your account is pending review.")
else:
form = UserCreationForm()
return render(request, "registration/register.html", {"form": form})
管理員可以登錄Admin站點,並通過更改is_active
元素來手動批准用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.