Frage

sagen, ich bin ein Django-app zu schreiben, und alle Vorlagen in der App benötigen eine bestimmte Variable.

Die „klassische“ Art und Weise damit zu umgehen, afaik ist ein Kontext-Prozessor zu schreiben und es zu TEMPLATE_CONTEXT_PROCESSORS im settings.py hinzuzufügen.

Meine Frage ist, , dann ist dies der richtige Weg, es zu tun, wenn man bedenkt, dass apps sein sollte „unabhängig“ vom eigentlichen Projekt mit ihnen?

Mit anderen Worten, wenn diese App zu einem neuen Projekt bereitstellen, ist es eine Möglichkeit, das Projekt zu vermeiden, um mit seinen Einstellungen explizit mess?

War es hilfreich?

Lösung

Ihre Annahme, dass Anwendungen können nur in einem Projekt hinzugefügt werden, ohne dass die Projekteinstellungen zu berühren ist nicht korrekt.

Wenn Sie eine Anwendung zu einem Projekt hinzufügen, Sie haben die Einstellungen zu bearbeiten , da Sie es im INSTALLED_APPS Tupel hinzufügen.

Warum also nicht den Kontext Prozessorliste bearbeiten?

Andere Tipps

Kontext-Prozessoren sind sehr nützlich, und ich würde nicht mit ihnen werden, zu scheuen, aber in einigen Situationen macht es keinen Sinn machen.

Dies ist eine Technik, die ich verwende, wenn ich brauche, um etwas einfach auf alle Ansichten in einer App enthalten. Ich kann nicht bestätigen, dass dies die ‚richtige‘ Art und Weise, Dinge zu tun, aber es funktioniert für unser Team:

werde ich ein globales Wörterbuch template_vars am Anfang der Datei deklarieren. Jede Ansicht würde seine eigenen Variablen zu diesem Wörterbuch hinzufügen und es auf die Vorlage übergeben, und es kehrt template_vars in der render_to_response Verknüpfung.

Es sieht ungefähr so ??aus:

template_vars = {
    'spam': 'eggs',
    }

def gallery(request):
    """
    portfolio gallery
    """

    template_vars['projects'] = Projects.objects.all()
    return render_to_response('portfolio/gallery.html', template_vars, context_instance=RequestContext(request))

Ja, einen Kontext Prozessor Zugabe ist der empfohlene Ansatz, dies zu erreichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top