POST请求在Django中使用ajax [英] POST request using ajax in Django
问题描述
这是我的JavaScript代码,跟随此解决方案:
$。ajax({
url:'{%url home%}',
data:{selected_folders:formData,
csrfmiddlewaretoken:'{{csrf_token }}'},
dataType:json,
type:POST,
});
我也尝试 Django的解决方案
$ ).submit(function(){
var csrftoken = $ .cookie('csrftoken');
$ .ajax({
url:'{%url home%}',
data:{selected_folders:formData,
csrfmiddlewaretoken:csrftoken},
dataType:json,
type:POST,
});
});
这是我的 view.py
p>
def home(request):
if request.method =='POST':
Call_Other_Class()
return render_to_response('home.html')
我的目标是发送POST请求 home.html
本身,当 home.html
获取POST请求时,它会调用其他类来做某事其他。我不确定将CSRF令牌放在模板中,如果我的 view.py
中的代码是否正确。
$ b $感谢您的阅读和解决问题。
编辑
我编辑我的JavaScript代码到:
< script type =text / javascriptcharset =utf-8 >
$(document).ready(function(){
var csrftoken = Cookies.get('csrftoken');
函数csrfSafeMethod(method){
return(/ $ {
$ b $ .ajax({
url:'{%url home%}',
数据:{selected_folders:formData},
beforeSend:function(xhr,settings){
if(!csrfSafeMethod(settings.type)&!this.crossDomain){
xhr。 setRequestHeader(X-CSRFToken,csrftoken);
}
},
dataType:json,
type:POST,
});
});
< / script>
HTML:
code><形式>
< ul>
< li id ='key1'>< / li>
< li id ='key2'>< / li>
< / ul>
< / form>
仍然无效。
对于Js:
$(form)。submit
$ .ajax({
url:'{%url home%}',
data:{selected_folders:formData,
csrfmiddlewaretoken:$([name = csrfmiddlewaretoken] ),
dataType:json,
类型:POST,
});
});
对于 view.py :
def home(request):
if request.method =='POST'and request.is_ajax():
Call_Other_Class()
return render_to_response('home.html')
I met some problems when I try to send the POST request using ajax in Django. I already research some topics here, but still can't find the way to solved them.
Here is my javascript code that follow this solution:
$.ajax({
url: '{% url home %}',
data: {selected_folders: formData,
csrfmiddlewaretoken: '{{ csrf_token }}'},
dataType: "json",
type: "POST",
});
I also try the solution from Django
$("form").submit(function() {
var csrftoken = $.cookie('csrftoken');
$.ajax({
url: '{% url home %}',
data: {selected_folders: formData,
csrfmiddlewaretoken: csrftoken},
dataType: "json",
type: "POST",
});
});
Here is my view.py
def home(request):
if request.method == 'POST':
Call_Other_Class()
return render_to_response('home.html')
My goal is to send the POST request from home.html
to itself, and when home.html
get the POST request, it will call other classes to do something else. I am not sure where to put the CSRF token in the template and if my code in view.py
is correct or not.
Thanks for your reading and solve my problems.
Edit:
I edited my javascript code to:
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
var csrftoken = Cookies.get('csrftoken');
function csrfSafeMethod(method) {
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajax({
url: '{% url home %}',
data: {selected_folders: formData},
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
},
dataType: "json",
type: "POST",
});
});
</script>
HTML:
<form>
<ul>
<li id='key1'></li>
<li id='key2'></li>
</ul>
</form>
still doesn't work.
For Js:
$("form").submit(function() {
$.ajax({
url: '{% url home %}',
data: {selected_folders: formData,
csrfmiddlewaretoken: $("[name = csrfmiddlewaretoken]"),
dataType: "json",
type: "POST",
});
});
For view.py:
def home(request):
if request.method == 'POST' and request.is_ajax():
Call_Other_Class()
return render_to_response('home.html')
这篇关于POST请求在Django中使用ajax的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!