Я работаю с формами Django и по какой-то причине эта форма не будет проверяться! Он подчиняется в порядке, или, по крайней мере, на сервере запускается ответ HTTP-ответа с кодом 200 (ok). По какой-то причине моя форма не пройдет тест is_valid!Форма Django не подтвердит
views.py:
def new_show(request):
if request.method == 'POST':
img_form = ImageForm(request.POST, request.FILES)
show_form = NewShowForm(request.POST)
if show_form.is_valid():
new_Show = Show()
new_Show.title=show_form.cleaned_data['title']
new_Show.body=show_form.cleaned_data['body']
new_Show.pub_date=timezone.now()
new_Show.location=show_form.cleaned_data['location']
new_Show.time=show_form.cleaned_data['time']
new_Show.save()
if img_form.is_valid():
image=Image(image=request.FILES['imageFile'])
new_Show.image_set.add(image)
return HttpResponseRedirect(reverse('shows'))
else:
return HttpResponseRedirect(reverse('shows'))
else:
show_form = NewShowForm()
img_form = ImageForm()
return render_to_response(
'shows/new_show.html',
{'show_form': show_form, 'img_form': img_form},
context_instance=RequestContext(request)
)
Вот мой шаблон фрагмент:
<form action="{% url "new_show" %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<p>{{ show_form.non_field_errors }}</p>
<p>
<label for="title">Title:</label>
<input type="text" name="title"/>
</p>
<p>
<label for="body">Body:</label>
<textarea type="text" name="body"> </textarea>
</p>
<p>
<label for="location">Location:</label>
<input type="text" name="location"/>
</p>
<p>
<label for="time">Date:</label>
<input type="text" id="time" maxlength="25" size="25" name="time"><a href="javascript:NewCal('time','ddmmmyyyy',true,24)"><img src="{{ STATIC_URL }}../../static/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a>
</p>
<!-- Upload Form. Note enctype attribute! -->
{% csrf_token %}
<p>{{ img_form.non_field_errors }}</p>
<p>{{ img_form.imageFile.label_tag }}</p>
<p>
{{ img_form.imageFile.errors }}
{{ img_form.imageFile }}
</p>
<p><input type="submit" value="Add Upcoming Show"></input></p>
</form>
Вот моя форма Класс:
class NewShowForm(forms.Form):
title=forms.CharField()
body=forms.CharField(widget=forms.TextArea)
location=forms.CharField()
time=forms.DateTimeField(required=True)
class ImageForm(forms.Form):
imageFile = forms.FileField(required=False, label='Select an Image')
Пожалуйста, помогите мне!
Пожалуйста, а) попытайтесь исправить ваш отступ и b) покажите свои объявления класса формы. –
ok Я думаю, что я получил отступы правильно. Я добавил forms.py –
Основываясь на простом просмотре кода формы, на меня бросаются две вещи. Во-первых, по умолчанию требуются поля - у вас есть 'required = True', указанный для' time', но это необязательно. Если вы отправляете без значений для 'title',' body' или 'location', форма недействительна. Если это не проблема, я бы проверил, какие значения передаются для ввода 'time'. Вы объявили его как «DateTimeField», и если ваш виджет Javascript не создает строку, которую поле может анализировать, это неверно. Вы видите сообщения об ошибках формы после отправки? –