2017-01-14 24 views
0

私はユーザーを削除しますか?Djangoでユーザーを削除

おそらく私はallauthのようなライブラリを使うことができますが、私はこれを私の見解でしたいと思います。 私はこれについてチュートリアルを見つけることができませんでしたので、私はこれを間違った方法で学習しようとしています。

私は持っているURLで:

urlpatterns = [ 

    ('^remove$', views.remove_user, name="remove"), 
] 

形式:

class RemoveUser(forms.ModelForm): 

    class Meta: 
     model = User 
     fields = ('username',) 

ビュー:

@login_required(login_url='http://127.0.0.1:8000/') 
def remove_user(request): 
    if request.method == 'POST': 
     form = RemoveUser(request.POST) 
     username = request.POST.get('username') 
     if form.is_valid(): 
      rem = User.objects.get(username=username) 
      rem.delete() 
      return redirect('main') 
    else: 
     form = RemoveUser() 
    context = {'form': form} 
    return render(request, 'remove_user.html', context) 

私は、テキストフィールドにウェブサイトやタイプテキストにアクセスすることができます。ランダムなユーザー名を入力すると、「ユーザーは存在しません」というエラーが表示されますが、正しいユーザー名を入力すると「そのユーザー名のユーザーはすでに存在します」というメッセージが表示され、このユーザーは削除されません。

どうかお手伝いできますか?次のように通常のフォーム -

class RemoveUser(forms.Form): 
    username = forms.CharField() 

にフォームが表示がされる

+0

コードを掲載するにはpastebinを使用してください。ここに置いてください。 – utkbansal

+0

ユーザを削除するよりも非アクティブにして、ユーザに接続されたデータは削除されず、他の人は古いユーザ名を使用する新しいユーザを登録できないようにするのがより一般的です。 =偽、彼はもうログインできません。 – RemcoGerlich

+0

@utkbansalありがとう、 – Maciejjy

答えて

1

変更 - 同じ問題にアプローチする

@login_required(login_url='http://127.0.0.1:8000/') 
def remove_user(request): 
    if request.method == 'POST': 
     form = RemoveUser(request.POST) 

     if form.is_valid(): 
      rem = User.objects.get(username=form.cleaned_data['username']) 
      if rem is not None: 
       rem.delete() 
       return redirect('main') 
      else: 
       ## Send some error messgae 
    else: 
     form = RemoveUser() 
    context = {'form': form} 
    return render(request, 'remove_user.html', context) 

EDIT--もう一つの方法は、ユーザーを無効にすることです

if form.is_valid(): 
     rem = User.objects.get(username=form.cleaned_data['username']) 
     if rem is not None: 
      rem.is_active = False 
      rem.save() 
+0

その仕事は今すぐ。私はあなたが言ったようにFormをFormに変更しなければなりませんでした。ありがとう。 – Maciejjy

関連する問題