Django как деактивировать учетную запись пользователя
Допустим, я хочу деактивировать определенную учетную запись пользователя, когда пользователь нажимает кнопку Deactivate Account.
Как мне это сделать?
\\\views.py
def delete_view(request):
profile = request.user
if request.method == 'POST':
form = DeleteUserForm(request.POST, request.FILES, instance=profile)
if form.is_valid():
profile.is_active = False
return redirect('/')
else:
form = DeleteUserForm(instance=profile)
return render(request, 'delete.html', {'form': form, 'profile': profile})
\\\forms.py
class DeleteUserForm(forms.Form):
delete = forms.CharField(
label='', max_length=0).widget = forms.HiddenInput()
Код был просто попыткой, но не работает из-за экземпляра, поэтому вы можете убрать экземпляр
Из official документации is_active
Указывает, следует ли считать эту учетную запись пользователя активной. Мы рекомендуем установить этот флаг в False вместо удаления учетных записей; таким образом, если в ваших приложениях есть внешние ключи к пользователям, внешние ключи не сломаются
.
Вы можете установить is_active статус для False этого specific user. Вы можете deactivate этого конкретного пользователя, предоставив username этого пользователя в вашем views, поскольку username уникален, вы можете передать username и deactivate этому конкретному пользователю, как показано ниже:
def delete_view(request, username):
try:
u = User.objects.get(username=username)
u.is_active = False
u.save()
return HttpResponse() #<--- after successful deactivation of user
except User.DoesNotExist:
return HttpResponse() #<--- if user does not exists with provided username
except Exception as e:
return HttpResponse() #<---- if some exception occurs