我试图通过单击一个按钮来删除列表中的元素,每个按钮都将元素的pk作为id
$('.delete').on('click', function (event) {
var evaluacion_id = this.id;
$.confirm({
title: 'Desea Eliminar Evaluacion?',
content: 'De ser asi no podra Recuperar estos datos',
buttons: {
confirm: function (evaluacion_id) {
var url = "{% url 'delete-evaluacion' evaluacion_id %}"
$.ajax({
type:"POST",
url: url,
success: function(){
location.href="{% url 'evaluaciones-psicologo' informe.proceso.pk %}"
}
});
},
cancel: function () {
$.alert('Continue Evaluando');
},
}
})
});
如果我执行$.alert("Delete "+evaluacion_id);
而不是ajax函数,一切正常,它会向我显示正确的ID
但是,如果我使用ajax函数调用它,就会抛出这个
Reverse for 'delete-evaluacion' with arguments '('',)' not found. 1 pattern(s) tried: ['INTRANET\\/delete-evaluacion/(?P<pk>\\d+)$']
还有我的urls.py
url(r'^procesos/EvaluacionesPsicologo/(?P<pk>\d+)$',views.evaluaciones_psicologo,name='evaluaciones-psicologo'),
url(r'^procesos/EvaluacionePsicologo/(?P<pk>\d+)$',views.evaluacion_psicologo,name='evaluacion-psicologo'),
url(r'^delete-evaluacion/(?P<pk>\d+)$', views.EliminarEvaluacion, name='delete-evaluacion'),
答案 0 :(得分:1)
问题在于,模板标记{% url 'delete-evaluacion' evaluacion_id %}
是在呈现模板时而不是在运行JavaScript时评估的。 Django不知道变量evaluacion_id
,因此它尝试使用空字符串反转URL,该字符串与URL模式不匹配。
执行此操作的正确方法是获取URL模式并将其转换为模板URL格式,但这将需要深入研究Django URL解析的内部,这可能不值得麻烦。有一个库可以为您完成此操作:Django JS Reverse
一种更为实用的方法是使用伪ID来反转URL,然后在JavaScript中将其替换。
$('.delete').on('click', function (event) {
var evaluacion_id = this.id;
$.confirm({
title: 'Desea Eliminar Evaluacion?',
content: 'De ser asi no podra Recuperar estos datos',
buttons: {
confirm: function (evaluacion_id) {
var url = "{% url 'delete-evaluacion' 9999 %}".replace('9999', evaluacion_id);
$.ajax({
type:"POST",
url: url,
success: function(){
location.href="{% url 'evaluaciones-psicologo' informe.proceso.pk %}"
}
});
},
cancel: function () {
$.alert('Continue Evaluando');
},
}
})