不知道这是否可行。但是我试图这样做,当用户点击保存或删除锚点时,它不会重定向到任何地方。我想我要问的是,隐藏输入是否有可能将锚识别为输入并将其发送到视图?
示例 模板: * 已更新!
<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() });
}
});
});
或者我这样做错了吗?
答案 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