2015-06-05 18 views
21

Ich versuche Djangos in 'default' Filter mit diesem CodeDjango Template Filter Syntaxfehler

{% load sekizai_tags static compress i18n %} 
[...] 
<title>{{ title|default:"nothing" }}</title> 

gebaut zu verwenden, aber es gibt mir die folgende Ausnahme

django.template.base.TemplateSyntaxError: default requires 2 arguments, 1 provided 

Ich verwende die folgenden Einstellungen für meine Vorlage Backend

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [ 
      str(APPS_DIR.path('templates')), 
     ], 
     'OPTIONS': { 
      'debug': DEBUG, 
      'loaders': [ 
       'django.template.loaders.filesystem.Loader', 
       'django.template.loaders.app_directories.Loader', 
      ], 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'allauth.account.context_processors.account', 
       'allauth.socialaccount.context_processors.socialaccount', 
       'django.template.context_processors.i18n', 
       'django.template.context_processors.media', 
       'django.template.context_processors.static', 
       'django.template.context_processors.tz', 
       'django.contrib.messages.context_processors.messages', 
       'sekizai.context_processors.sekizai', 
      ], 
     }, 
    }, 
] 

Mein Editor markiert den Code als ungültig, aber ich überprüfe wie tausend von mal https://docs.djangoproject.com/en/1.8/ref/templates/builtins/

Wo dies als Beispiel gegeben:

{{ value|default:"nothing" }} 

Ich habe auch versucht, den Namen des Titels var zu ändern, um sicherzustellen, dass es nicht ein reserviertes Schlüsselwort ist.

+0

Lesen Sie dies helfen könnte https://groups.google.com/forum/#!topic/django-users/:

{{ title|default:"nothing" }} 

Dies löst eine Ausnahme aus m4w-RNt-DOg – chandu

+1

unwillkürlich das hat nicht geholfen, da ich tatsächlich Zitate für Werte verwende, "nichts" – Iwan1993

+0

Ich hasse es zu fragen ... aber sind Sie sicher, dass die Linie der Schuldige ist? Haben Sie andere Filter oder temporäre Tags in dieser Vorlage? Kannst du mehr von deiner Vorlage in deiner Frage zeigen? – rnevius

Antwort

1

Versuchen:

{{ title|default_if_none:"nothing" }} 

default_if_none wird die angegebene Zeichenfolge angezeigt, wenn die Variable 'Keine'.

Standard wird die Zeichenfolge angezeigt werden, wenn die Variable auf False, dh leere Strings, leere Listen usw.

Sie

Auch stellen Sie sicher, wertet Titel Variable in Ihrem Kontext zu senden, wenn Sie nicht default_if_none verwenden müssen

31

Stellen Sie sicher, dass nach dem Doppelpunkt kein Leerzeichen mehr vorhanden ist.

Das ist richtig:

{{ title|default: "nothing" }}