Hallo zusammen folgendes Problem,
ich arbeite an der Website einer Firma, die verschiedene Niederlassungen hat. Für jede Niederlassung gibt es eine eigene Website. Die Websites der einzelnen Niederlassungen unterscheiden sich aber inhaltlich bis auf die Kontaktdaten nicht, weswegen ich alle Daten aus einer zentralen Datenbank hole und zusätzlich eine Applikation für die Verwaltung der Niederlassungen angelegt habe. Funktioniert auch alles so wie ich möchte nur eine kleine Funktion hätte ich noch gerne.
Ist es irgendwie möglich Template-Variablen zu deklarieren, so dass die Firma diese als Platzhalter im Django-Admin bei der Verwaltung von Texten verwenden kann?
Sprich es wird zum Beispiel an der Seite Telefonauskunft am Text gearbeitet, der auf allen Seiten gleich erscheint. Für die Ausgabe der unterschiedlichen Telefonnummern so es aber möglich sein einen Platzhalter {{niederlassung.telefonnummer}} einzugeben.
So wie ich es probiert habe funktioniert es leider nicht, da der eingetragene Text samt Platzhalter ja in einer eigenen Template-Variable eingetragen wird.
Somit hätte man eine Template Variable in einer Template Variablen.
Hat einer eine Idee wie man das lösen könnte?
[Django]Template-Variable als Platzhalter verwenden
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Du kannst ja den im Admin eingegebenen Text mit der Template-Engine manuell rendern und diese gerenderte Version als String an das Template weitergeben, dass dann den Rest der Seite rendert und ausgibt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Und wie mache ich das mit dem manuell rendern!? Also Ansatz.
Save-Methode überschreiben und darin dann den eingegebenen Text samt Platzhaltern rendern und wieder in die Variable schreiben, die später den Text ausgibt!?
Übrigens sorry für die Auswahl des falschen Boards da habe ich mich vor lauter lauter verklickt.
Save-Methode überschreiben und darin dann den eingegebenen Text samt Platzhaltern rendern und wieder in die Variable schreiben, die später den Text ausgibt!?
Übrigens sorry für die Auswahl des falschen Boards da habe ich mich vor lauter lauter verklickt.
Ah mit der save-Methode überschreiben ergibt ja gar keinen Sinn, da ich ja nur eine Datenbank für mehrere Seiten verwende.
Wie wäre der Ansatz den eingegebenen Text mit der Template Engine manuell zu rendern?
Ansonsten wäre jetzt meiner Überlegung im View einfach per String-Replace Methode nach den Platzhaltern zu suchen und diese durch den jeweiligen Datensatz zu ersetzen.
Wie wäre der Ansatz den eingegebenen Text mit der Template Engine manuell zu rendern?
Ansonsten wäre jetzt meiner Überlegung im View einfach per String-Replace Methode nach den Platzhaltern zu suchen und diese durch den jeweiligen Datensatz zu ersetzen.
Hiermit müsste es doch gehen!?
http://docs.djangoproject.com/en/dev/ho ... te-filters
Somit hätte ich es auch nicht im view stehen.
http://docs.djangoproject.com/en/dev/ho ... te-filters
Somit hätte ich es auch nicht im view stehen.
Ich würde es so machen:
Ich nehme an, dass `Foo` ein Objekt beschreibt, das ein Attribut `text` hat, in dem du Templates auflösen willst, bevor du das speicherst. Das `...` gibt irgendwie den Kontext mit den möglichen Ersetzungen an. Vielleicht kannst du diese über `request` ableiten. Dort könntest du vielleicht an einer Subdomäne ableiten, welche Niederlassung es ist.
Aber vielleicht habe ich auch nur die Anforderung von ferix falsch verstanden.
Stefan
Code: Alles auswählen
from django.template import Template
class FooAdmin(admin.Model):
def save_model(self, request, obj, form, change):
obj.text = Template(obj.text).render(...)
obj.save()
Aber vielleicht habe ich auch nur die Anforderung von ferix falsch verstanden.
Stefan