2012-04-07 11 views

Antwort

1

request.user mit login_requiredist 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) 
    # ... 
+0

vielen dank, warum 'render' ist besser als' render_to_response' und warum lieber 'get_object_or_404' anstelle von' try/except'? – xpanta

+1

@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

Verwandte Themen