如何在django中使用AJAX帖子

时间:2014-09-21 07:41:10

标签: jquery python ajax django

我试着在django中使用ajax 点击图片后,我将img_number发布到def update(request) 并且不知道为什么ajax无法获得返回值(2)
它始终提醒“错误”

请帮助我如何在django中正确使用它  谢谢。

list.html:

<script type="text/javascript">
$( document ).ready(function() {
    $.ajaxSetup({
        data: { csrfmiddlewaretoken: '{{ csrf_token }}' },
    });

    $(".pic_elect").click(function(){
        var img_number = $(this).attr("img_number");
        $.ajax({
            url: 'update/',
            data: {"img_number":img_number,
            },
            type: 'POST',
            async: false,
            dataType: 'json',
            error: function(){
                alert("error")
                window.location.reload();
            },
            success: function(dataArr){
                if(dataArr == 2){
                    alert('good job!');
                }else if(dataArr==6){ 
                /* jump to another.html */
                }else{
                    alert('系統忙碌中,請稍後再試。');
                    window.location.reload();
                }
            }
        });});});
</script>
<body>
....
{% for sh in shop.images %}
<a class="pic_elect" href="#" img_number={{sh.path}}><img src="http://test/image_store/{{ sh.path }}"   ></a>
{% endfor %}
</body>

views.py

def update(request):
    if request.is_ajax():
        # travel = Traveltime.objects.filter(title=request.POST['title'])
        # travel.update(image_elect=equest.POST['img_number'])
        return 2  

Firebug说错误是:

500 INTERNAL SERVER ERROR   
AttributeError at /filter/travel/update/
'int' object has no attribute 'get'

1 个答案:

答案 0 :(得分:1)

视图必须始终返回HttpResponse对象。您需要将数据包装在其中。

return HttpResponse(2)

对于更复杂的数据,在创建响应之前序列化为JSON - 在1.7中,有一个JsonResponse类可以为您完成。