Ho un filtro currency
, che assume un valore in USD e lo converte in una valuta (o USD o GBP). La valuta da convertire è memorizzata nella sessione, ma i filtri non prendono RequestContext
, quindi non posso prenderlo direttamente da lì.Django - l'accesso alla RequestContext dall'interno di un filtro personalizzato
C'è un modo migliore di passare l'elemento sessione di rilevante nel modello, e dal modello nel filtro come argomento? Mentre questo approccio funziona, sembra abbastanza orribile, e probabilmente finirò per passare la valuta a (quasi) ogni modello.
mio filtro attualmente simile a questa:
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 - forse sono di spessore, ma non riesco a vedere in questi documenti come ottenere l'accesso alle variabili di sessione dai tag dei modelli personalizzati. Potresti darmi un esempio o far notare cosa mi manca? –
Ah - scavare attorno ad esso sembra essere passato come primo argomento del tag (appena trovato un esempio che aggiunge una classe ai link che corrispondono a un'espressione regolare, che sembra (a) utile e (b) adattabile - http: // gnuvince .wordpress.com/2007/09/14/un-django-template-tag-per-il-corrente-attiva-page /). –
A destra, il contesto è un parametro standard del metodo di rendering sul nodo del tag di modello. Se hai bisogno di un ulteriore esempio specifico, sono sicuro che potrei raccoglierne uno. – Adam