$(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 views函数中从这个Ajax帖子中获取数据?
模板:
<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)
为什么我还有:
[2013年11月30日14:47:52]“POST / folder / HTTP / 1.1”403 2294
在日志中?
答案 0 :(得分:8)
您始终可以在request.POST
变量中访问它。
文件:link
你应该在js代码中修复的另一件事是data
参数
jQuery文档声明如下:Object must be Key/Value pairs
(link)
更新问题
您收到403因为您没有发送csrf
令牌
如果您在MIDDLEWARE_CLASSES中启用了'django.middleware.csrf.CsrfViewMiddleware'
,那么您需要将{% csrf_token %}
放入表单的模板中,然后通过js将其与您的数据一起发送。
像这样:data: {'name': name, 'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val()}