使用json请求向客户端呈现视图

时间:2014-03-16 23:18:47

标签: ajax json django views

我希望通过新的问题和更清晰的描述回来,因为我做了很多改变,但我还没有找到一个有效的解决方案。从一开始我就有了一个视图,每当我按下一个按钮时,我想从另一个视图返回渲染视图。

@csrf_exempt def main(请求):

menu_beer = Food.objects.filter(category=4)
menu_crepe = Food.objects.filter(category=2)
menu_club = Food.objects.filter(category=1)
menu_spaggetti = Food.objects.filter(category=8)
menu_burgers = Food.objects.filter(category=11)
menu_hotdog = Food.objects.filter(category=1)
menu_salads = Food.objects.filter(category=7)
menu_toast = Food.objects.filter(category=3)
menu_dessert = Food.objects.filter(category=6)
menu_coffee = Food.objects.filter(category=9)
menu_soda = Food.objects.filter(category=5)
menu_food = Food.objects.filter(category=1)

menu_offer = Offer.objects.all()
obj={}
print "request ajax------------------------"
if request.is_ajax():
    print "inside ajax\/\/\//\/\/\/"
    sItem=request.GET.get('itemId')
    print "GET itemId="+sItem
    if sItem is not None:
        getobject=Food.objects.get(id=int(sItem))
        print getobject
        obj['id']=getobject.id
        obj['title']=getobject.title
        print "{}= "+str(obj)
        return HttpResponse(json.dumps(obj), content_type="application/json")
    else:
        print "ERRRRRRR"

return render(request,'main.html',{'view_title':"Menu",
                                   'menu_crepe':menu_crepe,
                                   'menu_club':menu_club,
                                   'menu_spaghetti':menu_spaggetti,
                                   'menu_burgers':menu_burgers,
                                   'menu_hotdog':menu_hotdog,
                                   'menu_salads':menu_salads,
                                   'menu_toast':menu_toast,
                                   'menu_dessert':menu_dessert,
                                   'menu_coffee':menu_coffee,
                                   'menu_soda':menu_soda,
                                   'menu_beer':menu_beer,
                                   'menu_offer':menu_offer,

                               })

def profile(请求):     return render(request,'profile.html')

@csrf_exempt def order(request):     OBJ = {}     打印“请求ajax ------------------------”     如果request.GET:         打印“POST”         sItem = request.GET.get( 'ITEMID')         print“GET2 itemId =”+ sItem         如果sItem不是None:             的getObject = Food.objects.get(ID = INT(sItem))             打印getobject             OBJ [ 'ID'] = getobject.id             OBJ [ '标题'] = getobject.title             打印“post2 =”+ str(obj)             return render(request,'order.html',{“obj”:obj})         其他:             打印“ER”     return render_to_response(“order.html”,{'obj':obj})

js就像:

$(document).ready( function(){
    $(".orderbtn").click(function(){
        p=$(this).prop("id");
        $.ajax({
            type:"GET",
            url:"order/",
            data:{"itemId":p
                  //'csrfmiddlewaretoken': $("{% csrf_token %}")
                 },
            success: function(data){
                $('#selected').html("data.title");
            }

        });

    });
});

所有代码和文件都是https://github.com/b10n1k/foodspot69.git

和main.html的部分应该在div之间显示id =“menu_display”的数据。

<div id="selected" class="selected"></div >

所以,我不确定在这种情况下如何处理每个视图。有什么建议我做错了吗?

1 个答案:

答案 0 :(得分:0)

我找到了这个解决方案,我发布它没有细节来帮助别人。在成功功能中,我添加了两个参数,现在看起来:

success: function(data){
                $('#selected').html(data, textStatus, jqXHR);
            }

我希望有人可以提供更多详细信息,因为我不知道为什么需要它们。