django+;ajax发送表单
我在收到一张表格后,尝试得到另一张表格 views.py 还有阿贾克斯django+;ajax发送表单,django,ajax,Django,Ajax,我在收到一张表格后,尝试得到另一张表格 views.py 还有阿贾克斯 $(document).ready(function() { $("#my_form").submit(function(event) { event.preventDefault(); $this = $(this); $.ajax({ type: "POST", data: $
$(document).ready(function()
{ $("#my_form").submit(function(event)
{ event.preventDefault();
$this = $(this);
$.ajax({
type: "POST",
data: $this.serialize(),
success: function(data)
{ console.log(data);
$this.html(data.form1);
},
error: function(data)
{ console.log(data);
}
});
});
});
我面临CSRF令牌丢失或不正确的问题。因为它没有转移到表格2。如何将此令牌转移到新表单
html这是html的第一页
{% extends 'base.html' %}
{% load i18n %}
{% block content%}
<div class="main-form">
<form action="" method="post" autocomplete="off" id="my_form">
{% csrf_token %}
<div class="contact-form" >
<h1>{%trans 'Регистрация' %}</h1>
<div class="txtb">{{form.fio.label}} {{form.fio}}{{form.fio.help_text}}</div>
<div class="txtb"> {{form.purpose.label}}{{form.purpose}}</div>
<div class="container" id="none">{{form.tso.label}}{{form.tso}}</div>
<div class="txtb">{{form.phone.label}} {{form.phone}}{{form.phone.help_text}}{{form.phone.errors}}</div>
<div class="txtb"> {{form.number_car.label}}{{form.number_car}}</div>
<div class="txtb"> {{form.date_visit.label}}{{form.date_visit}}</div>
<div class="txtb"> {{form.captcha.label}}<br>{{form.captcha}}{{form.captcha.errors}}</div>
<input type="submit" value="{%trans 'send' %}" class="btn" id="btn">
</div>
</form>
</div>
{% endblock %}
{%extends'base.html%}
{%load i18n%}
{%block content%}
{%csrf_令牌%}
{%trans'аааааа'%}
{{form.fio.label}{{form.fio}{{form.fio.help_text}}
{{form.purpose.label}{{{form.purpose}}
{{form.tso.label}{{form.tso}}
{{form.phone.label}{{form.phone}{{form.phone.help}{{form.phone.errors}
{{form.number_car.label}{{{form.number_car}}
{{form.date\u visit.label}{{{form.date\u visit}}
{{form.captcha.label}
{{form.captcha}}{{form.captcha.errors}
{%endblock%}
它是html secon page endreg.html
{% load i18n %}
{% block content%}
<form action="" method="post" autocomplete="off" >
{% csrf_token %}
<div class="verification" >
<div class="ver">
{{form}}
</div>
<input type="submit" value="{%trans 'send' %}" class="btn1" >
</div>
</form>
{%endblock%}
{%loadi18n%}
{%block content%}
{%csrf_令牌%}
{{form}}
{%endblock%}
csrf令牌位于两个页面上,但当我在浏览器中查看代码时,当我使用ajax添加两个表单时,它不会出现,因为您使用的是
render_to_string
,您需要将请求
对象传递到render_to_string
。您可以通过以下方式实现:
def get_name(request):
if request.method == 'POST':
user_code = generate_code(8)
subject = 'ver code'
message = user_code
phone = request.POST['phone']
form = NameForm(request.POST)
if form.is_valid():
Registration.objects.create(fio=request.POST['fio'],mail=request.POST['mail'])
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 get_name(请求):
如果request.method==“POST”:
用户代码=生成代码(8)
主题='版本代码'
消息=用户代码
电话=请求。POST['phone']
form=NameForm(request.POST)
如果form.is_有效():
Registration.objects.create(fio=request.POST['fio'],mail=request.POST['mail'])
发送邮件(主题、邮件、设置。电子邮件\u主机\u用户[mail],失败\u静默=False)
返回JsonResponse({'form1':将_呈现为_字符串('registers/endreg.html',{'form':NameForm1()},request=request)})
其他:
form=NameForm()
返回呈现(请求'registers/detail.html',{'form':form})
你能添加你的html表单吗?@NalinDobhal addand ad cren browser还有一个问题,如果可能的话,为什么在使用ajax在页面上接收到两个表单后,第一个表单的表单代码中会出现
def get_name(request):
if request.method == 'POST':
user_code = generate_code(8)
subject = 'ver code'
message = user_code
phone = request.POST['phone']
form = NameForm(request.POST)
if form.is_valid():
Registration.objects.create(fio=request.POST['fio'],mail=request.POST['mail'])
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})