Ниже мой код. ‘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 %} {amp}lt;div id="photobox" {amp}gt;{amp}lt;img id="img_pb3"src="{{t.photo.url}}"{amp}gt; {amp}lt;div{amp}gt;{amp}lt;a{amp}gt;{amp}lt;span onclick="test({{t.id}})" class="closeBtn"{amp}gt;{amp}amp;times;{amp}lt;/span{amp}gt;{amp}lt;/div{amp}gt;{amp}lt;/a{amp}gt; {amp}lt;/div{amp}gt; {% endfor %} 

URLs

 urlpatterns = [ path('', views.explore, name='explore'), path('home/', views.home, name='home'), path('home/comment', views.comment, name='comment'), path('home/photo_del/{amp}lt;iddy{amp}gt;', views.delete_photo, name='delete_photo') ] 

взгляды

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

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

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

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

Может быть, что-то вроде этого:

  {amp}lt;a class="closeBtn" href="{% url 'delete_photo' iddy=t.id %}" id="{{t.id}}"{amp}gt;{amp}lt;/a{amp}gt; 

И тогда вы можете получить ссылку, используя attr:

 $.ajax({ url: $('.closeBtn').attr("href"), data: { "iddy": $('.closeBtn').attr("id")}, ..... 

})

Илья Куц

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,