12

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?

Jand
  • 2,527
  • 12
  • 36
  • 66
  • 5
    Well you are goind into the except block, it is not a good idea use a generic except. You could try printing the error you're getting. – Gocht Nov 15 '15 at 03:25
  • Remove the try and except to look for any errors. – dan-klasson Nov 15 '15 at 03:26
  • There's probably too little information here for us to help you, but one thing you might try is opening up a python console in your environment and manually run each step. I find that tends to illuminate a lot of issues. (just remember to do "from django import setup" and then "setup()" first if using Django 1.7+ – Adam Luchjenbroers Nov 15 '15 at 03:35
  • Use `try: yourcode... expect DoesNotExist: dosomething...` instead. – Kane Blueriver Nov 15 '15 at 04:54

1 Answers1

17

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

Simeon Leyzerzon
  • 18,658
  • 9
  • 54
  • 82
doniyor
  • 36,596
  • 57
  • 175
  • 260
  • I want a button for this, so when I click the button beside the User in a ListView of users, then it takes that users pk, so I can filter it. – AnonymousUser Sep 28 '21 at 04:39