Я пытаюсь сделать подтверждение заказа по почте. Заполните форму, код прибывает по почте, введите новую форму и получите ответ об успехе. views.py
def get_name(request):
if request.method == 'POST':
user_code = generate_code(8)
subject = 'code'
message = user_code
phone=request.POST['phone']
form = NameForm(request.POST)
if form.is_valid():
date_use = form.cleaned_data.get("date_visit")
time_use = form.cleaned_data.get("time_visit")
purpose_use = form.cleaned_data.get("purpose")
if Registration.objects.filter(date_visit=date_use,time_visit=time_use).count()==0:
Registration.objects.create(fio=request.POST['fio'],phone=request.POST['phone'],date_visit=request.POST['date_visit'],time_visit=request.POST['time_visit'],
phone=request.POST['phone'])
request.session["phone"] = phone
request.session["code"] = user_code
send_mail(subject, message,settings.EMAIL_HOST_USER,[mail],fail_silently=False)
return JsonResponse({ 'form1': render_to_string( 'registers/endreg.html', {'form': NameForm1(), }, request=request) })
else:
form = NameForm()
return render(request, 'registers/detail.html', {'form': form})
def endreg(request):
name_phone = request.session.get("phone", " ")
name_code = request.session.get("code", " ")
if request.method == 'POST':
form = NameForm1(request.POST)
if form.is_valid():
code_use = form.cleaned_data.get("key")
if (name_code == code_use):
try:
user = Registration.objects.get(phone=name_phone)
user.verification = True
user.save()
return JsonResponse({ 'form2': 'thanks')
except:
return JsonResponse({ 'form2': 'error')
else:
form = NameForm1()
return render(request, 'registers/endreg.html', {'form': form})
и ajax код
$(document).ready(function()
{ $("#my_form").submit(function(event)
{ event.preventDefault();
$this = $(this);
$.ajax({
type: "POST",
data: $this.serialize(),
success: function(data)
{ console.log(data);
var parent=$("#my_form").parent();
parent.html(data.form1);
},
error: function(data)
{ console.log(data);
$this.html(data);
}
});
});
});
$(document).ready(function()
{ $("#my_form2").submit(function(event)
{ event.preventDefault();
$this = $(this);
$.ajax({
type: "POST",
data: $this.serialize(),
success: function(data)
{ console.log(data);
var parent=$("#my_form2").parent();
parent.html(data.form2);
},
error: function(data)
{
alert('Got an error dude');
}
});
});
});
После заполнения и отправки 1 формы все в порядке, 2 появляется в 2 в действии = "{% url 'endreg '%} "endreg. html
<form action="{% url 'endreg' %}" method="post" autocomplete="off" id="my_form2">
{% csrf_token %}
<div class="verification" >
<div class="ver">
{{form}}
</div>
<input type="submit" value="{%trans 'submit' %}" class="btn1" >
</div>
</form>
Тогда начинаются проблемы. После ввода кода меня перенаправляют на страницу 127.0.0.1:8000/endreg. Но в то же время статус изменяется, если введен правильно. Как сделать так, чтобы сообщение об успешном или неправильном коде появилось на той же странице