Question

J'ai un CMS qui récupère du contenu dynamique et le restitue à l'aide d'un modèle standard. Cependant, j'utilise maintenant des balises de modèle dans le contenu dynamique lui-même. Je dois donc effectuer une render_to_string, puis transmettre les résultats de cette recherche en tant que variable de contexte à render_to_response. Cela semble inutile.

Quelle est la meilleure façon de procéder?

Était-ce utile?

La solution

"Cela semble inutile" Pourquoi cela semble-t-il ainsi?

Chaque modèle est un mélange de balises et de texte. Dans votre cas, un bloc de texte a déjà été visité par un moteur de template. Et alors? Une fois transformé, il ne reste plus que du texte et passe très rapidement dans le moteur de gabarit suivant.

Avez-vous des problèmes de performances spécifiques? Ne répondez-vous pas à vos exigences de débit de transaction? Y a-t-il un problème spécifique?

Le code est-il trop complexe? Est-ce difficile à maintenir? Est-ce que ça casse tout le temps?

Je pense que votre solution est adéquate. Je ne suis pas certain que les balises de modèle dans le contenu dynamique conviennent au point de vue du débogage, mais à partir d'un "rendu de modèle" classique. point de vue, ça va.

Autres conseils

Ce que vous faites semble bien, mais vous pouvez vous poser la question suivante: pourquoi ne pas placer les références de gabarit directement dans votre modèle au lieu de les restituer manuellement?

<div>
    {% if object matches some criteria %}
        {% render_type1_object object %}
    {% else %}
        {% render_type2_object object %}
    {% endif %
    ... etc ...
</div>

Ou, mieux encore, utilisez un seul gabarit central pour restituer un objet (ou une liste d'objets), qui encapsule le mappage des types d'objet en gabarits. Ensuite, tous vos modèles font simplement référence au modèle unique, sans aucune connaissance de type nécessaire dans les modèles eux-mêmes.

La clé est que vous déplacez les connaissances sur la manière de rendre des objets individuels à partir de vos vues.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top