javascript - 使用 Django 通过 AJAX URL 传递参数

标签 javascript python ajax django

下面是我的代码。 “n”在控制台中正确记录,如果我将“n”的值手动输入到 url: '{% url "delete_photo"iddy=2%}' 中,一切都会完美无缺。 las,当我尝试使用“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 %}

网址

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)

最佳答案

你不可能这样做。您从根本上误解了后端 Django 代码和前端 Javascript 代码之间的关系。 Django 模板在服务器上完全评估,此时模板标签被转换为纯 HTML 文本。因此,Javascript 函数(在浏览器本身运行很久很久之后)无法传递要在模板标记中使用的参数。

做到这一点的唯一方法是使用虚拟值呈现 URL - 您知道 URL 本身不会出现的值 - 然后使用普通 JS 将 JS 中的值替换为参数中的值字符串替换函数。

老实说,最好从 URL 中完全删除 ID。除此之外,删除操作应该是 POST,而不是 GET - 您不希望 Googlebot 不小心抓取您的 URL 并删除您的所有项目 - 使用 POST,您可以在发布的数据中发送 ID。

关于javascript - 使用 Django 通过 AJAX URL 传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55051326/

相关文章:

javascript - xlsx 到 json 并带有空单元格

javascript - 根据给定标准对对象键进行排名

javascript - JavaScript 版本如何与 ECMAScript 版本相关联?

python - 如何根据 matplotlib 中的其他值对点进行着色?

javascript - 在渲染与生命周期方法中 react 计算

python - 使用 QThread 问题绘制 matplotlib 图形

Python matplotlib,获取xtick标签的位置

javascript - 在Rails中使用Ajax将div替换为partial

javascript - html jquery 在两种形式之间切换

javascript - 如果 php 返回 true 则重定向页面 jQuery ajax