2010-11-16 98 views
1

我有一個模板,顯示數據庫中的對象列表。用Django中的AJAX/jQuery刪除對象

{% 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 

回答

4

這是一個簡單的,但更長的故事。爲簡短起見,您可以查看這篇文章:http://www.arnebrodowski.de/blog/484-Django-Ajax-comment-deletion.html其中包含一個代碼片段(用YUI編寫,但其jQuery對應代碼非常相似:http://api.jquery.com/jQuery.ajax/),它執行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')