Tengo un filtro currency
, que toma un valor en USD y lo convierte a una moneda (ya sea USD o GBP). La moneda a la que convertir se almacena en la sesión, pero los filtros no toman RequestContext
, así que no puedo tomarla directamente desde allí.Django - accediendo al RequestContext desde un filtro personalizado
¿Hay una manera mejor que pasar el elemento de sesión relevante en la plantilla, y desde la plantilla en el filtro como argumento? Si bien este enfoque funciona, parece bastante horrible, y es probable que termine pasando la moneda a (casi) cada plantilla.
Mi filtro actualmente se ve algo como esto:
def currency(value, currency):
if currency == 'usd':
val = '$%.2f' % value
return mark_safe(val)
d = Decimal(value)
val = '£%.2f' % (d*Decimal('0.63'))
return mark_safe(val)
@Adam - tal vez estoy siendo grosero, pero no puedo ver en esos documentos cómo obtener acceso a las variables de sesión desde dentro de las etiquetas de plantilla personalizadas. ¿Podría darme un ejemplo o señalar lo que me estoy perdiendo? –
Ah - cavar alrededor parece ser pasado como el primer argumento de la etiqueta (acaba de encontrar un ejemplo que agrega una clase a enlaces que coinciden con una expresión regular, que se ve (a) útil y (b) adaptable - http: // gnuvince .wordpress.com/2007/09/14/a-django-template-tag-for-the-current-active-page /). –
Derecha, el contexto es un parámetro estándar del método de representación en el nodo de etiqueta de plantilla. Si necesita un ejemplo específico más, estoy seguro de que podría reunir uno. – Adam