Передача параметра через URL AJAX с помощью Django - PullRequest
2 голосов
/ 07 марта 2019

Ниже мой код. 'n' правильно регистрирует в консоли, и все работает отлично, если я вручную ввожу значение для 'n' в url: '{% url "delete_photo" iddy=2%}'. Увы, когда я пытаюсь использовать 'n' как переменную (см. Ниже), это дает мне ошибку обратного соответствия не найдена. Кто-нибудь может помочь с этим?

Javascript

 function test(n){
    console.log(n);
    $.ajax({
      type: 'get',
      url: '{% url "delete_photo" iddy=n%}',

      datatype:'json',
      success: function(data){
                alert(n)
                console.log(data)
                console.log(n)
                },
      error: console.log("SSS"),

    });}

HTML

{% for t in photos %}
<div id="photobox" ><img id="img_pb3"src="{{t.photo.url}}">
<div><a><span onclick="test({{t.id}})" class="closeBtn">&times;</span></div></a>
</div>
{% endfor %}

1010 * URLs *

urlpatterns = [
     path('', views.explore, name='explore'),
     path('home/', views.home, name='home'),
     path('home/comment', views.comment, name='comment'),
     path('home/photo_del/<iddy>', views.delete_photo, name='delete_photo')
]

вид

def delete_photo(request, iddy):

    data = {'a':iddy, 'b': iddy}
    return JsonResponse(data, safe=False)

1 Ответ

1 голос
/ 07 марта 2019

Вы не можете сделать это. Вы в корне неправильно поняли связь между внутренним кодом Django и внешним Javascript кодом. Шаблоны Django полностью оцениваются на сервере, после чего теги шаблонов преобразуются в обычный текст HTML. Поэтому нет никакой возможности, чтобы функция Javascript, которая намного, намного позже, запускалась в самом браузере, могла передавать параметр, который будет использоваться в теге шаблона.

Единственный способ сделать это - отобразить URL с фиктивным значением, которое, как вы знаете, не может быть в самом URL, и затем заменить это значение в JS на значение из параметра, используя обычный JS. функции замены строк.

Если честно, было бы лучше вообще удалить идентификатор из URL. Помимо всего прочего, действие удаления должно быть POST, а не GET - вы не хотите, чтобы робот Google робота случайно сканировал ваши URL-адреса и удалял все ваши элементы - и с помощью POST вы можете отправить идентификатор в опубликованных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...