Как ведут себя «default` и `default_if_none», если переменная отсутствует или не определена?

#django

Вопрос:

В Django, как default и default_if_none вести себя, если переменная отсутствует в контексте запроса?

Например, возьмите эту точку зрения:

 def example_view(request):
    return render(request, 'example.html', {'foo': 'bar'})
 

И возьмите этот соответствующий шаблон Django:

 {{ missing_variable|default:"default value" }}
<br>
{{ missing_variable|default_if_none:"default_if_none value" }}
 

Что здесь будет отображаться?

Ответ №1:

default использует запасное значение, если переменная является ложной или если она отсутствует:

 {{ missing_variable|default:"default value" }}
 

-> рендеринг > default value .

Однако default_if_none используется только запасное значение, если переменная существует и есть None , она не использует запасное значение, если переменная отсутствует в контексте запроса:

 {{ missing_variable|default_if_none:"default_if_none value" }}
 

-> ничего не отображает.