urls.py
from django.conf.urls import url, include
from trainers.views import viewtrainers, viewperson, viewdirect
app_name = 'trainers'
urlpatterns = [
url(r'^(?P<slug>[-\w]+)/$', viewtrainers, name='viewtrainers'),
url(r'^person/(?P<slug>[-\w]+)/$', viewperson, name='viewperson'),
url(r'^(?P<town>[-\w]+)/(?P<direct_slug>[-\w]+)/$', viewdirect, name='viewdirect'),
]
views.py
from django.shortcuts import render
from trainers.models import Trainer, Cities, Directions
from protrack.forms import ClientForm
from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import reverse
def trainerurl(request):
return HttpResponseRedirect(reverse('viewperson'))
def viewperson(request, slug):
trainer = Trainer.objects.get(slug = slug)
url = trainerurl(request)
if request.method == 'POST':
form = ClientForm(request.POST)
if form.is_valid():
subject = form.cleaned_data['subject'] + url
phone = form.cleaned_data['phone']
name = form.cleaned_data['name']
recipients = ['protrackby@gmail.com']
try:
send_mail(phone, subject, name, recipients)
except BadHeaderError: #Защита от уязвимости
return HttpResponse('Invalid header found')
#Переходим на другую страницу, если сообщение отправлено
return HttpResponseRedirect('/thanks/')
else:
#Заполняем форму
form = ClientForm()
return render(request, "trainer_person.html", {'trainer':trainer,
'form':form})