是否可以使用隐藏输入“保存”/“删除”锚点

时间:2012-03-09 17:26:09

标签: python html django django-views

不知道这是否可行。但是我试图这样做,当用户点击保存或删除锚点时,它不会重定向到任何地方。我想我要问的是,隐藏输入是否有可能将锚识别为输入并将其发送到视图?

示例 模板: * 已更新!

<a class="delete" href="javascript:void(0)">delete</a>

Django View :(我开始时)

@login_required
def edit_box(request):
    if 'edit' in request.POST:
         deletes = [int(item) for item in request.POST.getlist('delete')]
         yadda yadda delete code
         ...
    return render_to_response('cart/boxcart.html', context, context_instance=RequestContext(request))

Django查看: * 已更新!

@login_required
def edit_box(request):
    profile = get_object_or_404(Profile, user=request.user)
    item_in_profile = Item.objects.filter(profile=profile)
    deletes = [int(item_in_profile) for item_in_profile in request.POST.getlist('delete')]
    item_in_profile.filter(id__in=deletes).delete()
    item_in_profile.save()
    return render_to_response('cart/boxcart.html', context, context_instance=RequestContext(request))

ajax尝试:

 $(".delete").click(
      function(){ 
           $.ajax({
                type: "GET",
            url: "/profile/delete/{{ item???}}/",
            dataType: "json",
            success: function(data){
           $("{{ item }}").fadeOut(300, function() { $("{{ item }}").remove() });                       
           }
      });
 });

或者我这样做错了吗?

1 个答案:

答案 0 :(得分:1)

当然!您甚至不需要使用隐藏的输入。

您可以通过添加

确保锚标记不会出现在任何地方

href="javascript:void(0)"

Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?

另外,你需要做一些简单的javascript工作。

这将包括:

1)向锚点添加onclick事件

2)单击锚点时获取关联的item.id

3)获得你想要执行的动作,即。保存或删除

4)使用item.id和操作向您的django应用程序发出ajax请求。

5)做出回应!

这允许用户在不依赖页面刷新的情况下执行操作。 Ajax是一个至关重要的概念,非常值得学习。 http://www.w3schools.com/ajax/default.asp

注意通过ajax使用csrf中间件发布数据。它会变得棘手。 https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax