Jand
Jand

Reputation: 2727

How to delete user in django?

This may sounds a stupid question but I have difficulty deleting users in django using this view:

@staff_member_required 
def del_user(request, username):    
    try:
        u = User.objects.get(username = username)
        u.delete()
        messages.sucess(request, "The user is deleted")
    except:
      messages.error(request, "The user not found")    
    return render(request, 'front.html')

in urls.py I have

url(r'^del_user/(?P<username>[\w|\W.-]+)/$', 'profile.views.del_user'), 

Instead the user being deleted I get The user not found.

What can be wrong here?

Upvotes: 13

Views: 51174

Answers (2)

OGENRWOTH JIM FRANK
OGENRWOTH JIM FRANK

Reputation: 31

@login_required
def del_user(request):
    user = request.user
    user.delete()
    redirect("login")

Upvotes: -5

doniyor
doniyor

Reputation: 37846

You should change your code to:

@staff_member_required 
def del_user(request, username):    
    try:
        u = User.objects.get(username = username)
        u.delete()
        messages.success(request, "The user is deleted")            

    except User.DoesNotExist:
        messages.error(request, "User doesnot exist")    
        return render(request, 'front.html')

    except Exception as e: 
        return render(request, 'front.html',{'err':e.message})

    return render(request, 'front.html') 

and display the err in your template to see further error messages

Upvotes: 18

Related Questions