Home > Back-end >  filter method in try block is not working in django
filter method in try block is not working in django

Time:08-10

I have a model called properties which contains product details with the respective user IDs. The user id is called uid in the model.

I wrote a function in views.py to get the products that are only posted by logged-in user. I use the filter method in it, but it's not working. How can I solve this?

def view_products(request):
    try:
        user = request.user.id
        c = properties.objects.filter(uid=user,status=True)       
        return render(request,'view_products.html',{'c':c})
        
    except:
        txt = """<script>alert('You have no properties to view...');window.location='/userhome/';</script>"""
        return HttpResponse(txt)```

CodePudding user response:

From what I know, AnonymousUser does have id field, which can be even None, and if you use .filter() it does not raise exception. How do you want to handle except logic?

You should write it this way:

def view_products(request):
    if request.user.is_authenticated:
        user = request.user.id
        c = properties.objects.filter(uid=user, status=True)
        return render(request, 'view_products.html', {'c': c})
    txt = """<script>alert('You have no properties to view...');window.location='/userhome/';</script>"""
    return HttpResponse(txt)

is_authenticated is flag/property where you can easily handle if user is authenticated (logged in) or not.

  • Related