xpanta
xpanta

Reputation: 8418

django basic user validation in views.py

I am using this code to validate logged in / authenticated users in my views.py.

@login_required
def my_view(request, username):
    try:
        user = User.objects.get(username=username)
    except User.DoesNotExist:
        raise Http404(u'User not Found')
    if user == request.user and request.user.is_authenticated():
        variables = RequestContext(request, {})
        return render_to_response('my_template.html', variables)

is there another way (ie less code) to validate users, or do I need to put that in every view?

Upvotes: 0

Views: 661

Answers (1)

okm
okm

Reputation: 23871

request.user with login_required is the current logged-in user, you don't need to check it again by username, and thus there is no need to check is_authenticated. If you just want to render a page which have different logic for different user type, try the code below, if not, just use request.user. Also, use get_object_or_404 and render shortcuts.

from django.shortcuts import get_object_or_404, render
@login_required
def my_view(request, username):
    if username == request.user.username:
        return render(request, 'my_template.html', {})
    # render the page of user who is not request.user
    user = get_object_or_404(User, username=username)
    # ...

Upvotes: 1

Related Questions