Обратный для «send_form» без аргументов не найден. 1 шаблон(ы) попробовал: [u’app/send_message/(?P\d )/$’]

#python #django

Вопрос:

Я пытаюсь создать форму для использования на 2 страницах (индекс и контакт).

Как только форма выполнит метод post, она приведет страницу либо к успеху, либо к неудаче (простая html — страница с несколькими словами).

Я застрял из-за ошибки, показанной выше, и я все еще новичок в использовании Django.

Буду признателен за любую помощь. Спасибо

urls.py

 from django.conf.urls import url
from django.conf.urls import include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^app/', include('app.urls'))
]
 

app/url.py

 from .views import *

app_name = "app"
urlpatterns = [
    url(r'^home/

views.py

 from django.core.mail import send_mail
from .forms import MessagesForm
from django.conf import settings
rom django.shortcuts import render, redirect

def home(request):
   empty_form = send_form(request)
   cover_title = PageServiceCover.objects.latest('id').title
   cover_text = PageServiceCover.objects.latest('id').text

   context = {'cover_title': cover_title, 'cover_text': cover_text,'form':empty_form}
   return render(request, 'index.html', context)

def send_form(request):
    if request.method == 'POST':
        form = MessagesForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['name']
            email = form.cleaned_data['email']
            phone = form.cleaned_data['phone']
            category = form.cleaned_data['category']
            text = form.cleaned_data['text']
            form.save()
            subject=[name, phone, category]
            send_mail(subject, text, email, [settings.EMAIL_HOST_USER], fail_silently=False)
            return redirect('thanks', flag='success' )
        else:
            return redirect('not_working', flag='failed')

def success(request):
    return render(request, 'thanks.html')

def failed(request):
    return render(request, 'notworking.html')

 

index.html

 <form action="{% url 'app:send_form' %}" method="POST" target="_blank">
    {%csrf_token%}
    {{form.as_p}}
    <button type="submit"> Send Message </button>
</form>
 

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

1. Ваш send_form URL-адрес ожидает именованный аргумент flag , но вы его не передаете. Также ваш redirect s не будет работать, потому что у вас нет URL-адресов с именем thanks или not_working .

Ответ №1:

Для вашего URL-адреса нужен флаг

 url(r'^send_message/(?P<flag>d )/

измените представление и передайте флаг из шаблона

 def send_form(request, flag):
    if request.method == 'POST':
        form = MessagesForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['name']
            email = form.cleaned_data['email']
            phone = form.cleaned_data['phone']
            category = form.cleaned_data['category']
            text = form.cleaned_data['text']
            form.save()
            subject=[name, phone, category]
            send_mail(subject, text, email, [settings.EMAIL_HOST_USER], fail_silently=False)
            return redirect('thanks', flag='success' )
        else:
            return redirect('not_working', flag='failed')
 


, home, name='home'),
url(r'^contact/views.py


index.html


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

1. Ваш send_form URL-адрес ожидает именованный аргумент flag , но вы его не передаете. Также ваш redirect s не будет работать, потому что у вас нет URL-адресов с именем thanks или not_working .

Ответ №1:

Для вашего URL-адреса нужен флаг


измените представление и передайте флаг из шаблона


, contact, name='contact'),
url(r'^send_message/(?P<flag>d )/views.py


index.html


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

1. Ваш send_form URL-адрес ожидает именованный аргумент flag , но вы его не передаете. Также ваш redirect s не будет работать, потому что у вас нет URL-адресов с именем thanks или not_working .

Ответ №1:

Для вашего URL-адреса нужен флаг


измените представление и передайте флаг из шаблона


, send_form, name='send_form'),
url(r'^send_message/success/views.py


index.html


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

1. Ваш send_form URL-адрес ожидает именованный аргумент flag , но вы его не передаете. Также ваш redirect s не будет работать, потому что у вас нет URL-адресов с именем thanks или not_working .

Ответ №1:

Для вашего URL-адреса нужен флаг


измените представление и передайте флаг из шаблона


, success, name='success'),
url(r'^send_message/failed/views.py


index.html


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

1. Ваш send_form URL-адрес ожидает именованный аргумент flag , но вы его не передаете. Также ваш redirect s не будет работать, потому что у вас нет URL-адресов с именем thanks или not_working .

Ответ №1:

Для вашего URL-адреса нужен флаг


измените представление и передайте флаг из шаблона


, failed , name='failed'),
]
views.py


index.html


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

1. Ваш send_form URL-адрес ожидает именованный аргумент flag , но вы его не передаете. Также ваш redirect s не будет работать, потому что у вас нет URL-адресов с именем thanks или not_working .

Ответ №1:

Для вашего URL-адреса нужен флаг


измените представление и передайте флаг из шаблона


, send_form, name='send_form'),
измените представление и передайте флаг из шаблона


, home, name=’home’),
url(r’^contact/

views.py


index.html


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

1. Ваш send_form URL-адрес ожидает именованный аргумент flag , но вы его не передаете. Также ваш redirect s не будет работать, потому что у вас нет URL-адресов с именем thanks или not_working .

Ответ №1:

Для вашего URL-адреса нужен флаг


измените представление и передайте флаг из шаблона


, contact, name=’contact’),
url(r’^send_message/(?P<flag>d )/

views.py


index.html


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

1. Ваш send_form URL-адрес ожидает именованный аргумент flag , но вы его не передаете. Также ваш redirect s не будет работать, потому что у вас нет URL-адресов с именем thanks или not_working .

Ответ №1:

Для вашего URL-адреса нужен флаг


измените представление и передайте флаг из шаблона


, send_form, name=’send_form’),
url(r’^send_message/success/

views.py


index.html


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

1. Ваш send_form URL-адрес ожидает именованный аргумент flag , но вы его не передаете. Также ваш redirect s не будет работать, потому что у вас нет URL-адресов с именем thanks или not_working .

Ответ №1:

Для вашего URL-адреса нужен флаг


измените представление и передайте флаг из шаблона


, success, name=’success’),
url(r’^send_message/failed/

views.py


index.html


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

1. Ваш send_form URL-адрес ожидает именованный аргумент flag , но вы его не передаете. Также ваш redirect s не будет работать, потому что у вас нет URL-адресов с именем thanks или not_working .

Ответ №1:

Для вашего URL-адреса нужен флаг


измените представление и передайте флаг из шаблона


, failed , name=’failed’),
]

views.py


index.html


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

1. Ваш send_form URL-адрес ожидает именованный аргумент flag , но вы его не передаете. Также ваш redirect s не будет работать, потому что у вас нет URL-адресов с именем thanks или not_working .

Ответ №1:

Для вашего URL-адреса нужен флаг


измените представление и передайте флаг из шаблона