Question

J'essaie de personnaliser un CMS écrit en Django. Les éditeurs de contenu ne sont pas assez flexibles, alors j'essaie de trouver une meilleure solution.

Sans trop l'expliquer, j'aimerais qu'elle ressemble un peu à django-better-better chunks ou django-flatblocks . Vous configurez une région modifiable entièrement à partir du modèle. Je souhaite lier ces régions modifiables à un mélange de chaînes et d'instances d'objet. Un exemple serait d'avoir plusieurs régions modifiables basées sur un produit:

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

Ainsi, si vous avez une vue avec un autre produit comme instance_du_produit , ces deux blocs afficheront des données différentes. Je verrais également l'utilisation de blocs de l'ensemble du site qui ne font que traverser la partie chaîne. En gros, j'aimerais pouvoir transmettre des identificateurs 1-infini.

Mais je me bats vraiment sur deux fronts ici:

  1. Comment définir la relation entre l'identifiant mixte et le contenu réel "quotient " exemple? J'ai l'impression que les types de contenu sont peut-être présents ici, mais je ne sais vraiment pas par où commencer!

  2. Et comment puis-je écrire une balise de modèle pour lire la syntaxe ci-dessus et la convertir en objet pour le rendu?

Était-ce utile?

La solution

pour cela, vous pouvez créer une balise d'inclusion et l'utiliser comme:

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

Pour définir la balise, ajoutez à votre application / 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, ...}

Ensuite, vous aurez besoin d'un modèle qui renvoie le code HTML pour l'élément:

<h1>{{item.title}}</h1>
{{item_form}}
... add some conditional statements depending on extra vars
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top