簡體   English   中英

有沒有一種方法可以使用Django注冊模板注冊新用戶,從而在管理員手動檢查之前阻止他們登錄?

[英]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.

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