我在custom.js文件中有一个函数,如下所示:
function contactTraxio(fullname, telephone, email) {
if (typeof(fullname)==='undefined') fullname = null;
if (typeof(telephone)==='undefined') telephone = null;
if (typeof(email)==='undefined') email = null;
bootbox.dialog({
title: "Limit reached",
message: '<p class="text-main text-center">You have reached the limit of your calculations.</p>' +
'<p class="pad-btm mar-btm text-center">Upgrade your account by contacting us on +32 9 111 12 12 or filling in the form below.</p>' +
'<div class="row"> ' +
'<div class="col-md-12"> ' +
'<form class="" method="POST"> ' +
'<div class="form-group"> ' +
'<div class="col-md-6" style="padding-left: 0"> ' +
'<input id="contact-fullname" name="fullname" type="text" placeholder="Your fullname" class="form-control input-md" value="' + fullname + '"> ' +
'<span class="help-block"><small></small></span> </div> ' +
'</div> ' +
'<div class="col-md-6" style="padding-right: 0"> ' +
'<input id="contact-telephone" name="telephone" type="text" placeholder="Telephone" class="form-control input-md" value="' + telephone + '"> ' +
'<span class="help-block"><small></small></span> </div> ' +
'</div> ' +
'<div class="col-md-12 pad-no-lr-md" style="margin-top: 7.5px;"> ' +
'<input id="contact-email" name="email" type="text" placeholder="Your email address" class="form-control input-md" value="' + email + '"> ' +
'<span class="help-block"><small></small></span> </div> ' +
'</div> ' +
'</div>' +
'</form> ' +
'</div>' +
'</div>',
buttons: {
success: {
label: "Send",
className: "btn-primary",
callback: function () {
$.ajax({
type: 'POST',
url: '/master/contact_traxio/',
data: {
fullname: $('#contact-fullname').val(),
telephone: $('#contact-telephone').val(),
email: $('#contact-email').val(),
csrfmiddlewaretoken: '{{ csrf_token }}'
},
success: function (data) {
debugger;
}
});
}
}
}
});
}
因此,我在js中有一个联系表。我正在尝试使用ajax将表单数据发送到django视图。
我已经将csrfmiddlewaretoken: '{{ csrf_token }}'
添加到数据中,但是由于某种原因,我得到了一个错误:
Forbidden (CSRF token missing or incorrect.): /master/contact_traxio/
[03/Mar/2017 08:52:46] "POST /master/contact_traxio/ HTTP/1.1" 403 2502
contact_traxio视图如下:
@login_required
def contact_traxio(request):
if request.method == 'POST':
# Just test
return HttpResponse('{} / {} / {}'.format(request.POST['fullname'], request.POST['telephone'], request.POST['email']))
else:
return HttpResponseBadRequest("Sorry. Something went wrong.")
我从中调用contactTraxio
函数的django模板如下:
{% block page_content %}
<script>
$(document).ready(function () {
var fullname = '{{ user.user.first_name }} {{ user.user.last_name }}';
contactTraxio(fullname, '{{ user.telephone }}', '{{ user.user.email }}')
})
</script>
{% endblock %}
为什么没有发送csrf令牌?
有什么建议吗?
参考方案
您正在外部JS文件中使用Django模板语法。那是行不通的,因为Django不会解析这些文件。
文档显示exactly what you need to do从您的JS访问令牌;你应该遵循它。
django self,save()之后的成功函数为pk - javascript我可能会倒退,但是我试图在成功函数中使用pk创建要加载的href。该pk将是新的,并已由save()创建我想知道的是如何将self.pk包发布到js来使用它。JavaScriptJS$.ajax({ type: "POST", url: "/api/add/res/", data: JSON.stringify(dat…
Django CreateView不在表单提交时创建 - javascript在我的views.py中:class DatasetRequestCreateView(CreateView): model = DatasetRequest form_class = DatasetRequestForm template_name = 'engine/datasetrequest_create.html' def ge…
在Django视图中渲染URL变量 - javascript我试图在URL中传递一个id,它是在js中创建的,我需要在渲染中传递它,以便可以在新页面的jQuery中使用它。这可能吗?JSresults ="'results/"+this.pk+"'"; 网址url(r'^personnel/results/(\d*)/$', '…
Django AJAX返回undefined而不是变量 - javascript因此,我有一个简单的Django脚本,我在网上找到了一个AJAX函数,该函数运行Python脚本并通过stdout获取输出。views.pyfrom django.shortcuts import render def index(request): return render(request,'homepage/page.html') …
Javascript无法读取Django模板中字典的键和值 - javascript我有一本像这样的字典:dest = {2: [u'canada', u'A', 'Ottawa'], 5: [u'Malaysia', u'A', 'KualaLumpur'],...} 然后,我尝试使用javascript从Django模…