Scix Skrevet 5. april 2010 Del Skrevet 5. april 2010 Hei! Noen som vet hvordan jeg kan hente ut request.GET variabler i en template tag? Er en inclusion tag men det burde vel ikke ha noe å si http://docs.djangoproject.com/en/1.1/howto/custom-template-tags/#inclusion-tags Lenke til kommentar
steingrim Skrevet 5. april 2010 Del Skrevet 5. april 2010 Dette er en smule mer innviklet enn det burde være (og litt skyldes at du bruker inclusion tag). Først og fremst: du ønsker at HttpRequest-instansene er tilgjengelige i template-konteksten og for å få til det må du ha django.core.context_processors.request i TEMPLATE_CONTEXT_PROCESSORS - dette ordner du i settings.py. Dessverre er ikke dette nok. I tillegg må du sende med en RequestContext-instans når du rendrer templaten, render_to_response gjør for eksempel ikke dette default, du må be om det eksplisitt: def myview(request): return render_to_response('template.html', context_instance=RequestContext(request)) Når du eksplisitt bruker en RequestContext vil alle context processors du har satt opp i settings.py eksekveres og siden vi satte opp context_processors.request vil HttpRequest-instansen bli en del av template contexten. Hadde du brukt en vanlig template tag kunne du nå brukt context['request'].GET i python-koden din, men siden du bruker inclusion tag må du belage deg på enda mer sprell Inclusion tags antar nemlig at du ønsker en kliss ny template context, men du kan trikse det til ved å hente ut request-instansen fra parent-context og returnere den fra inclusion tagen din: @register.inclusion_tag("template.html", takes_context=True) def my_inclusion_tag(context, myparam): return {"inclusion_param": myparam, "request": context['request']} Tungvindt? Jada. Lenke til kommentar
Scix Skrevet 5. april 2010 Forfatter Del Skrevet 5. april 2010 Ja, det var litt jobb! For teste ut litt når jeg kommer hjem. Takk for hjelpen Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå