2009-08-25 9 views

Répondre

16

{% 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.

6

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.

Questions connexes