【问题标题】:Delete an object with AJAX/jQuery in Django在 Django 中使用 AJAX/jQuery 删除对象
【发布时间】:2010-11-16 20:14:05
【问题描述】:

我有一个显示数据库对象列表的模板。

{% for item in items %}
<li>
    {{ item }} - Tags: 
    {% for tag in item.tags.all %}
        <a href="/{{ user }}/{{ tag }}/">{{ tag }}</a>
    {% endfor%}
<br>
{{ item.notes }}
<br>
{{ item.date_modified|humanize_time_diff }}
<a href="">delete</a>
</li>
{% endfor%}

如何允许用户删除这些对象之一,同时保持在同一页面上?

这是我的视图函数:

def tag_page(request, username, tag=None):
if username == request.user.username:
    if tag and tag in request.user.userprofile.tag_set.all():
        tag = Tag.objects.get(title=tag)
        items = tag.item_set.all()
        return render_to_response("tag_page.html", { 'user': request.user , 
                                                      'tag': tag,
                                                    'items': items })
    else:
        items = request.user.userprofile.item_set.all()
        return render_to_response("tag_page.html", { 'user': request.user , 
                                                      'tag': tag,
                                                    'items': items })
else:
    raise Http404

【问题讨论】:

    标签: jquery ajax django


    【解决方案1】:

    这是一个简单但更长的故事。简而言之,您可以查看这篇文章:http://www.arnebrodowski.de/blog/484-Django-Ajax-comment-deletion.html,其中包含执行 AJAX 查询的 sn-p(用 YUI 编写,但它的 jQuery 对应物非常相似:http://api.jquery.com/jQuery.ajax/),这反过来又删除了评论。

    评论删除视图内置在django.contrib.comments.views中,你必须编写自己的删除标签视图。它应该大致如下所示:

        def delete_tag_view(request, tag):
            tag_to_delete = get_object_or_404(Tag, title=tag)
            tag_to_delete.delete()
            return HttpResponse('OK') # This should really return JSON and/or some relevant HTTP status code
    

    当然,您需要将其挂接到您的 URLconf 中:

    url(r'/tag/delete/(?P<tag>\w+)', 'tags.views.delete_tag_view', name='tag-delete')
    

    【讨论】:

      猜你喜欢
      • 2017-04-13
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多