[Django] Inclusion-Tag wird nicht ausgeführt

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
sparrow
User
Beiträge: 4505
Registriert: Freitag 17. April 2009, 10:28

Hallo Forum,

ich möchte in meiner Anwendung ein Template mit dem {% include %}-Tag in einem anderen Template anzeigen.

Folgenden Code habe ich in der views.py:

Code: Alles auswählen

register = template.Library()


def mail_notification(user):
    print "Angefragt"
    print "USER", user
    count = "Hallo"
    return {'count': count,}

register.inclusion_tag("/mail/notification.html")(mail_notification)
In meinem Template steht:

Code: Alles auswählen

{% include "mail/notification.html" with user=request.user %} 
Grundsätzlich funktioniert das schonmal, das Template wird angezeigt.
Aus der Doku entnommen hatte ich aber eigentlich, dass folgendes funktioniert:

Code: Alles auswählen

{% include mail_notification with user=request.user %} 
Das bricht allerdings mit einem Gehler ab (TemplateSyntaxError).

Aber selbst wenn ich das über die Template-Datei anspreche, was ja funktioniert, wird die Funktion dahinter nicht angesprochen. Sprich, ich bekomm weder den Wert zurück den ich im Template verarbeiten möchte, noch kommt es zu Ausgaben auf der Konsole. Ich habe das auch schon mit und ohne Paramter versucht.

Kann mir jemand weiterhelfen, wäre sehr nett.

Gruß
Sebastian
Zuletzt geändert von sparrow am Freitag 20. April 2012, 12:16, insgesamt 2-mal geändert.
Benutzeravatar
sparrow
User
Beiträge: 4505
Registriert: Freitag 17. April 2009, 10:28

Argh...

das war natürlich mein Fehler, funktionieren tut es aber auch jetzt nicht ;)

Ich glaube, dass das alles in der views.py auch falsch aufgehoben ist, aber ich weiß nicht wohin damit. Um sicher zu gehen, dass das ganze auch mit dem Import der App registriert wird, habe ich das alles in die __init__.py der App gepackt:

Code: Alles auswählen

from django import template

register = template.Library()

def mailnotification(user):
    print "USER:", user
    count = "Hallo"
    return {'count': count,}

register.inclusion_tag("/mail/notification.html")(mailnotification)
print "REGISTER IST DURCH!"

Die Registrierung wird auch durchgeführt.

Im Template:

Code: Alles auswählen

{% mailnotification with user=request.user %}
Fehler:
Invalid block tag: 'mailnotification' im Browser

Gruß
Sebastian
Benutzeravatar
sparrow
User
Beiträge: 4505
Registriert: Freitag 17. April 2009, 10:28

Hah, gelöst.

Hier steht wie es funktioniert. So richtig am Stück:

http://iraniweb.com/blog/?p=9
Antworten