#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-адреса нужен флаг
измените представление и передайте флаг из шаблона