request.user
mit login_required
ist der aktuelle angemeldete Benutzer, Sie müssen nicht durch Benutzernamen wieder zu überprüfen, und somit gibt es keine Notwendigkeit is_authenticated
zu überprüfen. Wenn Sie nur eine Seite rendern möchten, die unterschiedliche Logik für unterschiedliche Benutzertypen haben, versuchen Sie den folgenden Code, wenn nicht, verwenden Sie einfach request.user
. Verwenden Sie auch get_object_or_404
und render
Verknüpfungen.
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)
# ...
vielen dank, warum 'render' ist besser als' render_to_response' und warum lieber 'get_object_or_404' anstelle von' try/except'? – xpanta
@xpanta so wie ihr Modulname 'shortcuts' steht, helfen sie Ihnen, weniger Code zu schreiben und damit weniger Fehler zu machen. Außerdem ist "get_object_or_404" fast gleich w/try/excepted, das versucht, ein Modellobjekt zu erhalten, und löst Http404 aus, wenn es fehlschlägt; [render] (https://docs.djangoproject.com/en/1.4/topics/http/shortcuts/#render) ist dasselbe wie render_to_redering, verwendet aber immer RequestContext – okm