Django автоматически обнаруживает переданные формы в шаблон - PullRequest
0 голосов
/ 02 декабря 2011

Раньше я называл все свои формы form, а в шаблоне base.html я использовал {{ form.errors }}, чтобы перехватить все ошибки,

Теперь я по-разному назвал разные формы во многих разных представлениях, но я хочу, чтобы эта форма перехватывала сообщения об ошибках общего характера, как я могу обнаружить все переданные формы и перебрать их?

Спасибо

1 Ответ

1 голос
/ 02 декабря 2011

Ничто не доступно для вашего шаблона, если это не в контексте. Поскольку вы управляете контекстом для каждого представления, я не уверен, в чем здесь проблема. Неважно, какая ваша форма названа в представлении, вы можете просто передать ее в контекст как «form»:

render_to_response('template.html', {
    'form': some_crazy_form_name,
}, context_instance=RequestContext(request))

Если у вас есть одно представление с несколькими формами, вы можете просто предоставить переменную контекста, называемую «формы», и сделать ее списком:

render_to_response('template.html', {
    'forms': [first_form, second_form]
}, context_instance=RequestContext(request))

Или даже лучше как словарь, чтобы вы могли знать, какая форма какая:

render_to_response('template.html', {
    'forms': {
        'alpha': first_form,
        'beta': second_form,
    },
}, context_instance=RequestContext(request))

Идея в том, что вы можете делать все, что угодно. Просто установите контекст, как вы хотите, а затем используйте его в своем шаблоне. Где проблема?

...