下面是我的代码。 'n'在控制台中正确记录,并且如果我在url: '{% url "delete_photo" iddy=2%}'
中手动输入'n'的值,一切将正常工作。 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">×</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)
答案 0 :(得分:1)
您不可能这样做。您从根本上误解了后端Django代码和前端Javascript代码之间的关系。在服务器上对Django模板进行了全面评估,然后将模板标签转换为纯HTML文本。因此,无法在浏览器本身上运行很多得多的Javascript函数可以传递要在模板标记中使用的参数。
执行此操作的唯一方法是使用伪值呈现URL-您知道在URL本身中不会出现一个伪值-然后使用普通JS将JS中的值替换为参数中的一个字符串替换函数。
说实话,最好从URL中完全删除ID。除其他事项外,删除操作应该是POST,而不是GET-您不希望Googlebot意外抓取您的URL并删除所有项目-并且通过POST,您可以在发布的数据中发送ID。>
答案 1 :(得分:0)
也许是这样的:
<a class="closeBtn" href="{% url 'delete_photo' iddy=t.id %}" id="{{t.id}}"></a>
然后您可以使用attr检索引用:
$.ajax({
url: $('.closeBtn').attr("href"),
data: { "iddy": $('.closeBtn').attr("id")},
.....
})