我需要你的帮助,我正在尝试使用jeditable编辑{%for in%}内的表格上的字段。
可编辑的DIV:
<td><div class="edit" id="{{ c.id }}">{{ c.name|safe }}</div></td>
可编辑代码:
<script>
$(document).ready(function(){
$('.edit').editable('/categoryedit/{{ c.id }}/', {
style: 'display: inline'
});
});
</script>
URL:
url(r'^categoryedit/(?P<id>\d+)/$', 'pos.views.CategoryEdit'),
查看:
def CategoryEdit(request, category_id):
id = request.POST.get('category_id', '')
value = request.POST.get('value', '')
categoria = Category.objects.get(pk=id)
categoria.name = value
categoria.save()
return HttpResponse(escape(value))
答案 0 :(得分:2)
解决方案:问题是可编辑的DIV位于{%for%} bucle内,在这种情况下需要使用.each这样的Javascript ......
$('.edit').each(function(){
$('.edit').editable('/categoryedit', {
});
});
并没有必要传递url中的参数(“/ category / 1”)而不是更好地使用...
c_id = request.POST.get('id')
视图必须如下:
def CategoryEdit(request):
if request.is_ajax():
if request.method == 'POST':
txt = request.POST.get('value')
c_id = request.POST.get('id')
categoria = Category.objects.get(pk=c_id)
categoria.name = txt
categoria.save()
return HttpResponse(txt)
答案 1 :(得分:0)
您可能需要将CSRF数据添加到您的javascript中。我刚碰到这个并在这里发布: Django and JEditable: CSRF error
可以肯定的一种方法是使用firebug并查看从Django返回的ajax响应。 (如果缺少CSRF信息,则Jeditable AJAX调用将引发403 Forbidden错误。)