Domanda

Sto cercando di personalizzare un CMS scritto in Django. Gli editor dei contenuti non sono abbastanza flessibili, quindi sto cercando di trovare una soluzione migliore.

Senza esagerare, mi piacerebbe che fosse un po 'come django-better-chunks o django-flatblocks . È possibile impostare un'area modificabile interamente all'interno del modello. Voglio associare queste aree modificabili a un mix di stringhe e istanze di oggetti. Un esempio sarebbe avere più aree modificabili basate su un prodotto:

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

Quindi, se hai una vista con un altro prodotto come product_instance quei due blocchi mostrerebbero dati diversi. Vorrei anche che ci fossero dei blocchi per tutto il sito che passano solo attraverso la parte di stringa. In sostanza, vorrei essere in grado di passare identificatori 1-infinito.

Ma sto davvero lottando su due fronti qui:

  1. Come definire la relazione tra l'identificatore misto e il contenuto effettivo " block " esempio? Ho la sensazione che i contenttypes possano apparire qui, ma non ho davvero idea di dove iniziare a cercare!

  2. E come posso scrivere un tag modello per leggere la sintassi sopra e convertirla in un oggetto per il rendering?

È stato utile?

Soluzione

per questo puoi creare un tag di inclusione e usarlo come:

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

Per definire il tag, aggiungi alla tua 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, ...}

Quindi avrai bisogno di un modello che restituisca html per l'elemento:

<h1>{{item.title}}</h1>
{{item_form}}
... add some conditional statements depending on extra vars
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top