【问题标题】:Is it possible to have 'Save' / 'Delete' anchors with hidden inputs是否可以使用隐藏输入的“保存”/“删除”锚点
【发布时间】:2012-03-10 04:32:58
【问题描述】:

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

示例: 模板: * 已更新!

<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() });                       
           }
      });
 });

还是说我做错了?

【问题讨论】:

  • 如果您想在不重新加载页面的情况下删除某些内容,您应该使用 AJAX。尝试搜索示例,有很多。

标签: python html django django-views


【解决方案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

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

【讨论】:

  • 这太棒了。谢谢你。我不知道 ajax,但我肯定会玩弄它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 2020-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多