Удалить объект с помощью AJAX / jQuery в Django - PullRequest
1 голос
/ 16 ноября 2010

У меня есть шаблон, который отображает список объектов из базы данных.

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

1 Ответ

4 голосов
/ 17 ноября 2010

Это простая, но длинная история. Если коротко, вы можете проверить эту статью: 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...