«Поле обязательно для заполнения» перед отправкой формы - PullRequest
1 голос
/ 21 августа 2011

Я пытаюсь выбросить 'Поле обязательно для заполнения' сообщения, как только пользователь отправил форму, и они не заполнили обязательные поля.
Что происходит, так это то, что ошибка отображается еще до того, какФорма была отправлена.Разве проверка не должна быть сделана после представления?

У меня есть следующая форма:

class LookforPlace(forms.Form):
    name = forms.CharField(required=True,max_length=100,label='Name',error_messages = {'required': "This field is required..."})
    city = forms.CharField(required=False,label='City')
    email = forms.EmailField()

У меня есть следующее представление:

def newreview(request):
    if request.method == 'GET': # If the form has been submitted...
        form = LookforPlace(request.GET) # A form bound to the GET data
        if form.is_valid(): # All validation rules pass
            return HttpResponseRedirect('/newreview/valid') # Redirect after GET
    else:

        form = LookforPlace() # An unbound form
    return render_to_response('newreview.html', {
        'form': form,
    })

ИУ меня есть следующий HTML-код:

 <form action="/newreview/" method="get">
{% for field in form %}
        <div class="fieldWrapper">
            {{ field.errors }}
            {{ field.label_tag }}: {{ field }}
        </div>
    {% endfor %}
<input type="submit" value="Submit" />
</form>

1 Ответ

2 голосов
/ 21 августа 2011

GET выдается при обычном просмотре страницы, а не только при отправке формы с помощью этого метода - если вы хотите использовать то же представление для отображения начальной формы и обработки отправки с помощью GET, вам следует проверить наличиезначение из отправленной формы.

Один из вариантов - присвоить кнопке отправки имя ...

<input type="submit" name="submit" value="Submit">

... и проверить, что это имя было передано в качестве параметра.(это также хороший способ обработки форм с несколькими кнопками отправки, поскольку только нажатая кнопка будет считаться успешным элементом управления, и ее имя будет отправлено в качестве параметра в запросе):

if 'submit' in request.GET:
    # ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...