web-dev-qa-db-fra.com

Comment insérer un modèle dans un autre modèle?

J'ai un modèle très basique (basic_template.html) et je souhaite le remplir avec des données formatées à l'aide d'un autre modèle partiel. Basic_template.html peut contenir plusieurs éléments formatés à l'aide du modèle partiel.

Comment structurer le code dans views.py?

La raison pour laquelle je le fais est que plus tard, le sera rempli avec Ajax. Est-ce que je le fais bien?

59
WindowsMaker

Tu peux faire:

<div class="basic">
{% include "main/includes/subtemplate.html" %}    
</div>

subtemplate.html est un autre modèle Django. Dans ce subtemplate.html, vous pouvez mettre le code HTML qui serait obtenu avec Ajax.

Vous pouvez également inclure le modèle plusieurs fois:

<div class="basic">
{% for item in items %}
    {% include "main/includes/subtemplate.html" %}    
{% endfor %}
</div>
110
Simeon Visser

Vous pouvez le faire en utilisant un bloc . Les blocs sont une balise de modèle Django qui remplacera les sections d'un modèle que vous étendez. J'ai inclus un exemple ci-dessous.

basic_template.html

<body>
{% block 'body' %}
{% endblock %}
</body>

modèle que vous souhaitez inclure: (exemple: exemple.html)

{% extends 'basic_template.html' %} 
{% block 'body' %}
/* HTML goes here */
{% endblock %}

views.py:

return render_to_response(template='example.html', context, context_instance)

Cela chargera basic_template.html, mais remplacera tout ce qui se trouve dans {% block 'body' %} {% endblock %} dans basic_template.html par tout ce qui est contenu dans {% block 'body' %} {% endblock %}

Vous pouvez en savoir plus sur les blocs et l'héritage de modèles dans la Django Docs

19
Wipqozn

Il y a principalement 2 façons (2 faciles)

1:

Dans le code HTML de base, insérez {% include "myapp/sub.html"%}

Et écrivez simplement du code HTML dans votre fichier sub.html

2:

https://docs.djangoproject.com/en/dev/ref/templates/language/#template-inheritance

0
Akshat Tamrakar

Je voulais simplement ajouter des différences d'extension et d'inclusion . Les modèles et les options d'inclusion peuvent utiliser des modèles insérés dans l'application actuelle . Include est destiné à être utilisé dans certaines applications ... Par exemple, vous souhaitez insérer un curseur d'image sur votre page d'accueil et sur votre page, mais nulle part ailleurs Vous pouvez créer une application Slider avec son propre modèle pour plus de commodité, importer son modèle et l'inclure dans ces pages. Si vous utilisiez un modèle pour cet exemple, vous créeriez 2 modèles: un avec curseur et tous les autres modèles.

0
oljik