Ich habe einige Code, der den aktuellen angemeldeten Benutzer erhält.Halten Django Ansichten DRY
userID = request.session.get("_auth_user_id")
if userID:
loggedin_user = User.objects.get(pk=int(userID))
else:
loggedin_user = None
Ich möchte den Benutzernamen auf jeder Seite angezeigt werden.
Im Moment habe ich in jeder Ansicht den Code bin setzen und zu jeder Vorlage gegen D.R.Y Ethik des django zu gehen
return render_to_response('index.html', {loggedin_user})
Dies scheint das Benutzerobjekt übergeben. Wie kann ich das tun, indem ich mich wiederhole?
EDIT: Vielleicht Benutzer war ein schlechtes Beispiel.
Was passiert, wenn ich
items = Item.objects.all()
und in der Liste auf every eine Liste von Objekten aus der Datenbank erhalten will.
Muss ich diesen Code schreiben und die Liste in jeder Ansicht an die Vorlage übergeben. Oder kann ich einmal Code schreiben, der diese Liste für alle Vorlagen verfügbar macht?
aber dann hast du die {% lade mein _template_tag%} in 20 Vorlagen ...Dies ist nicht DRY –
Wenn Sie es häufig verwenden, ist es wahrscheinlich in einer übergeordneten Vorlage, die Sie erweitern, und daher haben Sie es nur an einer Stelle. Wenn dies nicht der Fall ist, könnten Sie wahrscheinlich einen benutzerdefinierten Kontextprozessor verwenden. –