Как удалить встроенный список ошибок форм модели Django? - PullRequest
1 голос
/ 31 марта 2019

Я сделал форму модели в Django, которая позволяет пользователю создавать экземпляр этой модели. Все хорошо, кроме одной вещи. Встроенные списки ошибок Django раздражают. Я хочу, чтобы эти ошибки проявились, когда пользователь действительно допустил эту ошибку. Когда я открываю свою страницу, это выглядит так enter image description here

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

Я не знаю, нужны ли вам эти коды для решения этой проблемы, но вот оно: файл views.py здесь

@login_required(login_url='/accounts/login/')
def article_create(request):
    article_form = ArticleForm(request.POST or None, request.FILES)
    if article_form.is_valid():
        instance = article_form.save(commit=False)
        instance.author = request.user
        article_form.save()
    return render(request, 'blog/article-create.html', {'form': article_form})

Спасибо

1 Ответ

2 голосов
/ 31 марта 2019

Вы используете идиому request.POST or None - которая мне не нравится, но неважно - для параметра данных, но не для параметра файлов. Поскольку вы передаете (пустое) слово для файлов, Django принимает вашу форму как связанную и, следовательно, пытается проверить ее.

Если вы настаиваете на использовании этой идиомы, вам нужно сделать это для обоих:

article_form = ArticleForm(request.POST or None, request.FILES or None)

Но на самом деле, это гораздо более Pythonic, чтобы быть явным:

if request.method == 'POST':
    article_form = ArticleForm(request.POST, request.FILES)
    if article_form.is_valid():
        instance = article_form.save(commit=False)
        instance.author = request.user
        article_form.save()
        return redirect('/')
else:
    article_form = ArticleForm()
return render(request, 'blog/article-create.html', {'form': article_form})

Обратите внимание, вам всегда нужно перенаправить после успешного POST, как я делал выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...