2009-09-14 10 views
23

Sto usando la libreria lxml per definire una variabile (categoria) in una vista. lxml fornisce un metodo .get per recuperare gli attributi personalizzati. Mi piacerebbe utilizzarlo nel modello in questo modo:Come passare un argomento a un metodo su una variabile di modello in Django?

{{ category.get("foo") }} 

So che quando si utilizzano variabili di modello non è necessario usare le parentesi, ma ottengo il seguente errore:

{{ category.get "foo" }} 

Could not parse the remainder: ' "foo"' from 'category.get "foo"'

Suppongo che ci sia qualcosa di sbagliato nella mia sintassi ma google non ha aiutato. I documenti di django dicono che i metodi sono cercati usando un .

+0

La sintassi utilizzata nei filtri del modello Django è ":" per gli argomenti, quindi penso che se qualcuno dovesse implementarlo, sarebbe {{category.get: foo}}. Ma non esiste. Forse dovresti aggiungerlo? – slacy

+0

Possibile duplicato di [Come chiamare la funzione che accetta un argomento in un modello Django?] (Http://stackoverflow.com/questions/2468804/how-to-call-function-that-takes-an-argument-in- a-django-template) –

risposta

32

Non si può passare un argomento ad un attributo chiamabile come questo. O tira il valore nella vista o scrivi un tag modello personalizzato per farlo.

+0

C'è un modo per avere accesso ad altre variabili, come la richiesta corrente (es. request.user) o l'attuale oggetto di contesto? – slacy

+1

si può in un templatetag personalizzato –

+0

Si dovrebbe già avere accesso a request.user – OllyTheNinja

15

Sono d'accordo con la filosofia di separare la logica dalla progettazione, ma c'è un'eccezione. Attualmente sto scrivendo un metodo get_image (height = xxx, width = xxx) per un modello. Chiaramente, dovrebbe spettare al progettista di modelli decidere la dimensione dell'immagine come ultima fase. Anche se suppongo che la cosa giusta da fare sia scrivere un tag personalizzato, ma perché limitare?

+1

Totalmente vero. Non è una "risposta", più come un commento, ma +1 –

Problemi correlati