【发布时间】:2016-10-29 01:56:29
【问题描述】:
我正在尝试找出允许用户使用 django-allauth 删除或停用其帐户的最佳方法,并且我假设我需要将 is_active 字段设置为 False。
我下面的解决方案有几个问题: 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>
【问题讨论】:
-
请注意,在某些司法管辖区(即至少所有欧盟),用户有权要求真正删除其帐户,而不仅仅是停用帐户。因此,根据您的服务,明确说明帐户是被停用还是删除,并提供执行真正删除的选项可能是明智之举。
-
感谢您提出这个问题。我将不得不对用户的删除方法进行一些研究。
标签: python django django-allauth