Les django template doc mentionne les éléments suivants pour prolonger les modèles:Comment utiliser la variable template de Django?
{% extends variable %}
Où dois-je définir la variable? Est-ce à partir du views.py?
Les django template doc mentionne les éléments suivants pour prolonger les modèles:Comment utiliser la variable template de Django?
{% extends variable %}
Où dois-je définir la variable? Est-ce à partir du views.py?
{% extends %}
prend réellement une chaîne - l'emplacement du modèle à étendre.
Si vous souhaitez déclarer cette variable en Python, transmettez-la au chargeur de modèles en utilisant votre dictionnaire. Exemple:
import django.http
from django.shortcuts import render_to_response
# ...
INDEX_EXTEND = "index.html"
# ...
def response(request) :
return render_to_response("myview.html", {'extend': INDEX_EXTEND})
Et puis dans la vue:
{% extends extend %}
Notez que 'extend'
a été adopté dans le dictionnaire passé au modèle. Vous pouvez bien sûr définir la variable n'importe où ailleurs dans votre fichier .py
- ou même dans la déclaration même du dictionnaire.
Rappelez-vous que {% extends %}
peut aussi être invoquée en tant que tel:
{% extends "index.html" %}
Vérifiez les docs sur Template inheritance aussi.
Oui, c'est juste une variable de contexte comme une autre. Vous n'avez pas besoin d'utiliser une variable - {% extends "main.html" %}
est parfaitement acceptable, en fait préférable, sauf si vous avez besoin de faire quelque chose de massivement dynamique avec l'héritage de gabarit.