我正在尝试找出使用django-allauth允许用户删除或停用其帐户的最佳方法,并且我假设我需要将is_active字段设置为False。
我的解决方案有几个问题: 1)呈现的复选框字段is_active显示文本“指定是否应将此用户视为活动状态。取消选择以替代删除帐户。”如何将此文本更改为“如果您确定要删除此帐户,请选中此框。”?
更新:刚才意识到,勾选该框会将is_active设置为True,而取消勾选该框会将其设置为False,因此也许我需要使用不同的字段来验证表单?
2)如何在提交时注销用户?
forms.py:
我的解决方案有几个问题: 1)呈现的复选框字段is_active显示文本“指定是否应将此用户视为活动状态。取消选择以替代删除帐户。”如何将此文本更改为“如果您确定要删除此帐户,请选中此框。”?
更新:刚才意识到,勾选该框会将is_active设置为True,而取消勾选该框会将其设置为False,因此也许我需要使用不同的字段来验证表单?
2)如何在提交时注销用户?
forms.py:
class DeactivateUserForm(forms.ModelForm):
class Meta:
model = User
fields = ['is_active']
views.py:
login_required(login_url='/accounts/login/')
def deactivate_user_view(request):
pk = request.user.id
user = User.objects.get(pk=pk)
user_form = DeactivateUserForm(instance=user)
if request.user.is_authenticated() and request.user.id == user.id:
if request.method == "POST":
user_form = DeactivateUserForm(request.POST, instance=user)
if user_form.is_valid():
deactivate_user = user_form.save(commit=False)
user.is_active = False
deactivate_user.save()
return render(request, "account/userprofile_del.html", {
"user_form": user_form,
})
else:
raise PermissionDenied
userprofile_del.html:
<h2>Delete your account</h2>
<hr>
<form action="." method="POST" class="padding">{% csrf_token %}
{{ user_form.as_p}}
<button class="btn btn-primary" type="submit" name="action">{% trans "Confirm" %}</button>
</form>