Как написать сообщение Django в коде ваших просмотров

Я читаю документацию о том, как отобразить сообщение пользователю с сообщениями Django. Это говорит о том, что для добавления сообщения в ваши представления нужно позвонить:

from django.contrib import messages
messages.add_message(request, messages.INFO, 'Hello world.')

Я не уверен, где поставить вторую вторую строку, это мое мнение:

def sign_up(request):

    if request.method == "POST":
        form = IdForm(request.POST)
        if form.is_valid():
            post = form.save()
            post.save()
            ID = post.id_text
            return HttpResponse('Thank you')
        else:
            return HttpResponse('That text is invalid')
    else:
        form = IdForm()
    return render(request, 'checkin/base.html', {'form': form})

Я хочу, чтобы появилось сообщение, и благодарю пользователя за регистрацию и отображение его ввода.

2 ответа

Решение

Учитывая, что при правильной отправке формы обычно перенаправляют на URL успеха, ваш код должен выглядеть следующим образом:

def sign_up(request):

    if request.method == "POST":
        form = IdForm(request.POST)
        if form.is_valid():
            post = form.save()
            post.save()
            ID = post.id_text
            messages.add_message(request, messages.INFO, 'Hello world.')
            return HttpResponseRedirect('/thank-you-page/')

    else:
        form = IdForm()
    return render(request, 'checkin/base.html', {'form': form})

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

Вы можете представить вторую строку с примером:

      def contact(request):

if request.method == 'POST':
    name = request.POST.get('name')
    email = request.POST.get('email')
    password = request.POST.get('password')
    textarea = request.POST.get('textarea')
    contact = Contact(name = name,email = email,password = password,textarea = textarea,date=datetime.today())
    contact.save()
    messages.success(request, 'Form has submitted')

return render(request,"contact.html")
Другие вопросы по тегам