Как удалить встроенный список ошибок форм модели Django?

#python #django

#python #django

Вопрос:

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

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

Я не знаю, нужны ли вам эти коды для решения этой проблемы, но вот он: 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:

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

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

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

Но на самом деле, гораздо более по-питоновски быть явным:

 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})
  

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

Комментарии:

1. Большое вам спасибо, сэр, вы также очень помогли мне в предыдущих вопросах. Надеюсь, я мог бы однажды стать таким, как вы. Да благословит вас Бог и спасибо вам, сэр! Один вопрос: почему вам не нравится request.post или None. Вы предпочитаете использовать метод if.request == ‘опубликовать’ этот!

2. Как я уже сказал в ответе, я думаю, что более явно сделать это таким образом, и, следовательно, больше соответствует духу Python.