django jeditable不工作

时间:2012-10-12 08:17:20

标签: django jeditable

我需要你的帮助,我正在尝试使用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))

2 个答案:

答案 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错误。)