Возможно ли иметь привязки «Сохранить» / «Удалить» со скрытыми входами - PullRequest
0 голосов
/ 09 марта 2012

Не знаю, возможно ли это или нет.Но я пытаюсь сделать так, чтобы, когда пользователь нажимает сохранить или удалить привязку, он никуда не перенаправлялся.Я предполагаю, что я спрашиваю, возможно ли для скрытого ввода распознать якорь, как если бы это был ввод, и отправить его в представление?

Пример: Шаблон: * Обновлено!

<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 View: * Обновлено!

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

Или я все делаю неправильно?

1 Ответ

1 голос
/ 09 марта 2012

Конечно! Вам даже не нужно использовать скрытый ввод.

Вы можете убедиться, что тег привязки никуда не денется, добавив

href="javascript:void(0)"

Какое значение "href" я должен использовать для ссылок JavaScript, "#" или "javascript: void (0)"?

Кроме того, вам нужно будет немного поработать с JavaScript.

Это будет включать:

1) добавление события привязки к якору

2) при щелчке якоря получить связанный item.id

3) получить действие, которое вы хотите выполнить, т.е. сохранить или удалить

4) отправьте ajax-запрос в ваше приложение django с помощью item.id и действия.

5) сделать что-то с ответом!

Это позволяет пользователю выполнять действия, не полагаясь на обновления страницы. Ajax - это важная концепция, и она того стоит. http://www.w3schools.com/ajax/default.asp

Следите за публикацией данных через ajax с промежуточным программным обеспечением csrf. Это может быть сложно. https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax

...