如何在django views函数中从Ajax POST获取数据? [英] How to get data from Ajax POST in my django views function?
问题描述
$(document).ready(function(){
$('.addFolder input').keydown(function(e) {
if (e.keyCode == 13) {
name = $(this).val();
$.ajax({
type: "POST",
url: "/folder/",
data: name,
success: function(result) {
$('.folders ul li:first-child').after('<li class="bg-color-2 ui-droppable" data-folderid="2">'+name+' <span>0</span></li>');
$('.addFolder input').val('');
}
});
}
});
如何在Django视图功能中从此Ajax帖子中获取数据?
How to get data from this Ajax post in my django views function?
模板:
<div class="addFolder">
<span>+</span>
<input type="text" placeholder="Folder's name">
</div>
观看次数:
def folder(request):
user = request.user
if request.method == "POST" and request.is_ajax():
name = request.POST['name']
f = Folder.objects.create(name=name, user=user)
status = "Good"
return HttpResponse(status)
else:
status= "Bad"
return HttpResponse(status)
为什么我仍然有:
[30 / Nov / 2013 14:47:52] POST / folder / HTTP / 1.1 403 2294
[30/Nov/2013 14:47:52] "POST /folder/ HTTP/1.1" 403 2294
在日志中?
推荐答案
在您的 request.POST
变量中进行访问。
文档:链接 < br>
You can always access it in your request.POST
variable.
Docs: link
您应该在js代码中修复的另一件事是 data
参数。
jQuery文档声明以下内容:对象必须是键/值对
(链接)
Another thing you should fix in js code is data
parameter.
jQuery docs state the following: Object must be Key/Value pairs
(link)
有关更新的问题
您收到403,因为您重新发送 csrf
令牌。
如果您有'django.middleware.csrf.CsrfViewMiddleware'
在MIDDLEWARE_CLASSES中启用,则需要将 {%csrf_token%}
放入表单模板中,然后通过js与数据一起发送。
像这样: data:{'name':name,'csrfmiddlewaretoken':$('input [name = csrfmiddlewaretoken]')。val()}
on updated question
You receive 403 because you're not sending csrf
token.
If you have 'django.middleware.csrf.CsrfViewMiddleware'
enabled in your MIDDLEWARE_CLASSES, then you'd need to put {% csrf_token %}
into your form's template, and then send it via js along with your data.
Like this: data: {'name': name, 'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val()}
这篇关于如何在django views函数中从Ajax POST获取数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!