L'appel de fonction Python dans Django template
À l'intérieur d'un django template, je vais essayer d'appeler la fonction de répartition sur l'une des variables de modèle, puis obtenir le dernier élément, donc j'ai fait quelque chose comme ceci:
{{ newsletter.NewsletterPath.split('/').-1 }}
Malheureusement, il n'aime pas les diviser. Certains pourraient penser que je ne le partage de la vue, mais je ne suis pas sûr de savoir comment le faire parce que j'ai besoin de le faire pour tous les enregistrements. Il serait beaucoup plus facile si je pouvais le faire dans le modèle. Est-il un moyen de faire cela?
double possible de Django modèle de la fonction d'appel
OriginalL'auteur The.Anti.9 | 2010-01-22
Vous devez vous connecter pour publier un commentaire.
Que voulez-vous dire par "il n'aime pas le split"? Comment est-il manifeste son dégoût?
Si je me souviens bien, vous ne pouvez passer à n'importe quel arguments de méthodes, qui sont appelés à partir du modèle django et les identifiants, qui peuvent être utilisées dans les modèles, ne peut être constituée que de a-z, A-Z, 0-9, des traits de soulignement et des points (où les points signifient la recherche: dictionnaire->attribut->->liste-index).
Il y a au moins quatre façons d'obtenir ce que vous voulez:
self
remplir les instances de modèle dans la vue
(ou quelque chose le long de ces lignes)
OriginalL'auteur shylent
De la django livre:
Donc, si vous voulez appeler une méthode sans argument à partir d'un modèle, c'est la fin.
Sinon, vous devez le faire dans la vue.
OriginalL'auteur 3lectrologos
Modèles sont délibérément de ne pas pouvoir faire de telles choses. Le but est pour vous éviter de mettre votre logique métier dans les modèles, qui sont destinés à ne traiter que de la mise en page.
Donc une façon de le faire est de définir un NewsletterPathLastElement(auto) la fonction dans votre bulletin d'information de Modèle, et l'appeler à partir du modèle.
OriginalL'auteur Ofri Raviv
Oui, comme d'autres l'ont dit, vous ne devriez pas vraiment être le faire dans les modèles.
Mais si vous voulez, alors vous avez besoin pour définir un filtre et de le charger dans le modèle et l'utiliser.
OriginalL'auteur Lakshman Prasad