variable - render templates django




Besoin de convertir une chaîne en int dans un modèle Django (4)


J'essaie de passer les paramètres d'URL à un modèle Django comme celui-ci

response = render_to_string('persistConTemplate.html', request.GET)

C'est la ligne d'appel de mon fichier views.py. persistConTemplate.html est le nom de mon modèle et request.GET est le dictionnaire qui contient les paramètres d'URL.

Dans le modèle, j'essaie d'utiliser l'un des paramètres tels que celui-ci ...

{% for item in (numItems) %}

  item {{item}}

{% endfor %}

numItems est l'un des paramètres url que j'envoie dans ma requête comme ceci ...

http:/someDomain/persistentConTest.html/?numItems=12

Lorsque j'essaie la boucle for ci-dessus, j'obtiens une sortie comme celle-ci ....

image 1 image 2

J'attends et aimerais voir le mot image imprimé 12 fois ...

image 1 image 2 image 3 image 4 image 5 image 6 image 7 image 8 image 9 image 9 image 10 image 11 image 12

Quelqu'un peut-il me dire ce qui ne va pas?


J'aime créer un filtre personnalisé:

# templatetags/tag_library.py

from django import template

register = template.Library()

@register.filter()
def to_int(value):
    return int(value)

Usage:

{% load tag_library %}
{{ value|to_int }}

C'est pour les cas où cela ne peut pas être facilement fait en vue.



Oui, la place pour cela est dans la vue.

Je pense que l'exemple ci-dessus ne fonctionnera pas - vous ne pouvez pas parcourir un nombre entier.

numItems = request.GET.get('numItems')

if numItems:
   numItems = range(1, int(numItems)+1)

return direct_to_template(request, "mytemplate.html", {'numItems': numItems})


{% for item in numItems %}
 {{ item }}
{% endfor %}

Vous devez ajouter du code à votre vue pour décompresser les paramètres GET et les convertir en valeurs souhaitées. Même si numItems était un entier, la syntaxe que vous montrez ne vous donnerait pas le résultat souhaité.

Essaye ça:

ctx = dict(request.GET)
ctx['numItems'] = int(ctx['numItems'])
response = render_to_string('persistConTemplate.html', ctx)




django-templates