Я понимаю, что с помощью:Django переменных из шаблонов для просмотров - лучшая практика
...
return render_to_response('mytemplate.html',
locals(), context_instance=RequestContext(request))
в представлениях не считается хорошим кодом и что-то вроде:
...
return render_to_response('mytemplate.html', {
'some_variable' : some_variable,
'some_list': some_list,
}, context_instance=RequestContext(request))
считается лучше для его читаемости и эксплицитностей , Мне было просто любопытно, как лучше всего иметь дело с переменными, которые могут быть возвращены или не возвращены. Должен ли я явно установить их в виде следующим образом:
...
some_variable = None
some_variable = <some business logic>
return render_to_response('mytemplate.html', {
'some_variable' : some_variable,
'some_list': some_list,
}, context_instance=RequestContext(request))
, что приведет к более длинному коду просмотра. Или я должен проверить наличие переменных, прежде чем включать их в ответ?
Конечно, если я ничего не делаю, то я получаю:
local variable 'some_variable' referenced before assignment
Любые предложения приветствуются.
Что должно быть проблемой с вашим первым примером? – Marcin
@Marcin: это ленивый, неряшливый код, который часто приводит к загрязнению контекста. Он * работает *, но считается очень неудовлетворительной практикой. –
@ChrisPratt: Ленивый и неряшливый просто означает «Мне это не нравится». Является ли проблема только контекстным загрязнением в представлении с большим количеством местных жителей, которые не используются в шаблоне, или есть еще одна проблема? – Marcin