Jay*_*Jay 5 javascript python django ajax
下面是我的代码。'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"),
});}
Run Code Online (Sandbox Code Playgroud)
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">×</span></div></a>
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
网址
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')
]
Run Code Online (Sandbox Code Playgroud)
意见
def delete_photo(request, iddy):
data = {'a':iddy, 'b': iddy}
return JsonResponse(data, safe=False)
Run Code Online (Sandbox Code Playgroud)
你不可能这样做。您从根本上误解了后端 Django 代码和前端 Javascript 代码之间的关系。Django 模板在服务器上进行全面评估,此时模板标签将转换为纯 HTML 文本。因此,Javascript 函数(在浏览器本身上运行的时间要晚得多)无法传递要在模板标记中使用的参数。
执行此操作的唯一方法是使用虚拟值呈现 URL(您知道该值不会出现在 URL 本身中),然后使用普通的 JS 字符串替换函数将 JS 中的值替换为参数中的值。
说实话,最好从 URL 中完全删除 ID。除此之外,删除操作应该是 POST,而不是 GET - 您不希望 Googlebot 意外抓取您的网址并删除您的所有项目 - 并且通过 POST,您可以发送已发布数据中的 ID。
| 归档时间: |
|
| 查看次数: |
2481 次 |
| 最近记录: |