首页 > 解决方案 > 我正在尝试对我的 django 后端进行 ajax 调用

问题描述

我有 ths 代码 tyng 可以使用 ajax 调用我的 django,但它给了我这个错误:Reverse for 'delete_skill' with arguments '('',)' not found。尝试了 1 种模式:['jobs/delete_skill/(?P[0-9]+)$']

<a href="{% url 'freelance:delete_skill' id_number %}"
                       class="glyphicon glyphicon-trash delete_skill"
                            style="padding:0px; margin:0px; background:grey;
                             color:red; border:0px;" id="{{skill.id}}"></a>
            </span>
            {% endfor %}
            {% endif %}
            <script>
                $(document).ready(function() {
                   $(".delete_skill").click(function(){
                var id_number = this.id;
                alert(id_number);
                $.ajax({
                   type: 'DELETE',
                   url: "{% url 'freelance:delete_skill' id_number %}",
                   dataType: "json",
                   data: 'identifier='+id_number, 'csrfmiddlewaretoken': '{{ csrf_token }}
                   success: function(){
                      if(data) {alert("Success! skill has been deleted")}
        });

     });

}); 我的网址是这样的

url(r'^delete_skill/(?P<identifier>[0-9]+)$', views.delete_skill, name='delete_skill'),

请对正在发生的事情或我应该添加的任何帮助

标签: htmlajaxdjango

解决方案


好的,为了帮助您继续前进,这里有一个我使用的原则:

  1. 为 href 创建 data-* 属性,例如 data-href。您可以在此处阅读有关 data-* 属性的更多信息。

    <a href="#" data-href="{% url 'freelance:delete_skill' skill.id %}" 
      class="glyphicon glyphicon-trash delete_skill" style="padding:0px; margin:0px;
      background:grey; color:red; border:0px;" id="{{skill.id}}"></a>
    
  2. getAttribute()您可以使用或通过 dataset属性在 javascript 中访问此 data-href 属性。下面是 jQuery 示例,因为您已经在使用 jQuery。

    $(".delete_skill").click(function() {
        var url = $(this).attr("data-href");
        $.ajax({
            type: "DELETE",
            url: url,
            dataType: "json",
            data: {csrfmiddlewaretoken: '{{ csrf_token }}'},
            success: function(data){
                if(data) {
                    alert("Success! skill has been deleted");
                }
            }
         });
    });
    

这样,当您更改网址时,您的代码就不会中断。


推荐阅读