Frage

Ich versuche, ein CMS geschrieben in Django anpassen. Die Content-Editoren sind nicht flexibel genug, so versuche ich, eine bessere Lösung zu finden.

Ohne über es zu erklären, Ich mag es wäre ein bisschen wie django-besser-Chunks oder django-flatblocks. Sie legen einen bearbeitbaren Bereich vollständig aus der Vorlage auf. Ich mag diese bearbeitbare Bereiche zu einer Mischung aus Streichern und Objektinstanzen binden. Ein Beispiel wäre mehrere bearbeitbare Bereiche, bezogen auf ein Produkt:

{% block product_instance "title" %}
{% block product_instance "product description" %}

Wenn Sie also eine Ansicht mit einem anderen Produkt als product_instance haben die beiden blocks unterschiedliche Daten zeigen würde. Ich würde sehen, dass es dort auch für standortweite Blöcke sein, die nur durch den Strang Teil passieren. Im Wesentlichen würde ich in der Lage sein mag Identifikatoren 1-infinity passieren.

Aber ich bin wirklich kämpfen an zwei Fronten hier:

  1. Wie kann ich die Beziehung zwischen der gemischten Kennung und der eigentlichen Inhalts „block“ Instanz definieren? Ich habe das Gefühl, Content könnte hier verfügen, aber ich habe wirklich keine Ahnung, wo zu Beginn der Suche!

  2. Und wie schreibe ich einen Template-Tag die obige Syntax und konvertiere, dass in ein Objekt zum Rendern?

  3. lesen
War es hilfreich?

Lösung

für diese können Sie eine Aufnahme-Tag erstellen und verwenden Sie es mögen:

{% load my_tags %}
{% product bicycle <extra vars ...> %}

den Tag zu definieren, fügen Sie Ihre app / templatetags / mytags.py:

@register.inclusion_tag('results.html')
def product(item, *extra):
    #maybe repackage extra variables
    #and add them to the returned dictionary
    item_form = ItemForm(item) #form.ModelForm instance
    return {'item': item, 'item_form':item_form, ...}

Dann werden Sie eine Vorlage benötigen, die html für das Element zurückgibt:

<h1>{{item.title}}</h1>
{{item_form}}
... add some conditional statements depending on extra vars
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top