[Django] RequestContext im Template Tag (inclusion_tag)?

Django, Flask, Bottle, WSGI, CGI…
Antworten
nexonic

Hi,

ich habe eine Frage zu Template Tags bzw. speziell zum inclusion_tag.

Wenn man in einer View dem Template die Daten mit dem RequestContext gibt, also so z.B.:

Code: Alles auswählen

    return render_to_response(
        'myapp/index.html',
        {foo: 'foo', bar: 'bar},
        context_instance = RequestContext(request),
    )
...dann hat man ja in diesem Template auch Variablen wie "user" für den aktuellen Benutzer usw.

Nun habe ich aber noch ein Inclusion-Tag, z.B. so:

Code: Alles auswählen

@register.inclusion_tag(
    'myapp/templatetags/foo2.html',
    takes_context=True
)
def foobar(context, foo2):
    data = {
        'foo2': foo2
    }
    return data
In dem Template "foo2.html" habe ich so aber keinen Zugriff auf Variablen wie "user". Weiß jemand, wie man das bewerkstelligen kann?

Gruß
nexonic
Zuletzt geändert von nexonic am Dienstag 1. Juni 2010, 19:49, insgesamt 1-mal geändert.
tordmor
User
Beiträge: 100
Registriert: Donnerstag 20. November 2008, 10:29
Wohnort: Stuttgart

Code: Alles auswählen

@register.inclusion_tag(
    'myapp/templatetags/foo2.html',
    takes_context=True
)
def foobar(context, foo2):
    data = {
        'foo2': foo2
    }
    data.update(context)
    return data
http://www.felix-benner.com
nexonic

Perfekt, danke :)

Allerdings musste ich es genau andersherum machen, da `context` ja kein dict ist und ich deshalb diesen Fehler bekommen habe:

Code: Alles auswählen

Caught an exception while rendering: dictionary update sequence element #1 has length 1; 2 is required
So also:

Code: Alles auswählen

@register.inclusion_tag(
    'myapp/templatetags/foo2.html',
    takes_context=True
)
def foobar(context, foo2):
    data = {
        'foo2': foo2
    }
    context.update(data)
    return context
Antworten