あなたはこのような何か行うことができます。
def delete_user(request, username):
context = {}
try:
u = User.objects.get(username=username)
u.delete()
context['msg'] = 'The user is deleted.'
except User.DoesNotExist:
context['msg'] = 'User does not exist.'
except Exception as e:
context['msg'] = e.message
return render(request, 'template.html', context=context)
をなどのURLパターンがあります。
url(r'^delete/(?P<username>[\w|\W.-]+)/$', views.delete_user, name='delete-user')
これが作業を行いますが。指定したユーザー名でユーザーを削除します。 the docsとして
しかしは、言う:
is_active
ブール。このユーザーアカウントをアクティブと見なすかどうかを指定します。 を削除する代わりに、このフラグをFalse
に設定することをお勧めします。そうすれば、アプリケーションに外部キーがある場合、外部キーは壊れません。
外部キーが解除されますので、非アクティブの代わりに、データベースから完全にそれを削除するようユーザーを設定するためのより良いアプローチです。
だから、単に行うことができます。
def delete_user(request, username):
context = {}
try:
user = User.object.get(username=username)
user.is_active = False
user.save()
context['msg'] = 'Profile successfully disabled.'
except User.DoesNotExist:
# ...
except Exception as e:
# ...
# ...
として今、誰もがこのビューにアクセスすることができ、あなたには、いくつかの権限を追加する必要があります。簡単な方法は、組み込みの@user_passes_test
デコレータをオーバーライドすることです。
@user_passes_test(lambda u: u.is_staff, login_url=reverse_lazy('login'))
def delete_user(request, username):
# ...