Форма Django недействительна перед рендерингом с помощью контекстного процессора
У меня есть небольшая проблема с моей формой, использующей Django. На моем сайте на каждой странице есть поле 'settings' (отображаемое с помощью 'include') в base.html - каждое поле настроек имеет форму, которую я отображаю с помощью 'context processor', однако при отображении формы в шаблоне ничего не отображается. При рендеринге с помощью {{global_rebase_form.get_context}}
я получаю следующее сообщение:
{'form': <global_rebase_form bound=False, valid=False, fields=()>, 'fields': [], 'hidden_fields': [], 'errors': []}
Предполагаете, что он недействителен? Мой код выглядит следующим образом
Settings.py
'OPTIONS': {
'context_processors': [
'apps.home.views.global_rebase_context',
...
],
контекстный процессор:
def global_rebase_context(request):
form = global_rebase_form()
return {
'global_rebase_form': form
}
шаблон
<form method="POST" name="time" id="rebase-form">
{% csrf_token %}
{{global_rebase_form.as_p}}
</form>
form.py
class global_rebase_form(forms.Form):
class Meta:
model = profile
fields = ['location_rebase', 'time_rebase']
Любая помощь будет очень признательна!
Это означает, что если вы используете form.is_valid()
, он вернет False
, это потому, что форма не bounded. Bounded означает, что вы передали ей данные. Поэтому форма:
global_rebase_form(request.POST, request.FILES) # bounded
является ограниченным, в то время как форма без данных:
global_rebase_form() # not bounded and thus not valid
не ограничена и поэтому недопустима. Но здесь вы каждый раз создаете пустую форму. И только если пользователь отправит данные, вы построите новый объект формы с данными, а затем проведете его валидацию.
Следовательно, это не проблема.