Django Jquery按钮“选帖”

时间:2014-10-19 14:18:54

标签: jquery html ajax django django-views

在Django中,我有一个按钮“选择”如下:

<button class="click" id ="click" data-id="{{ Post.id }}" class="btn btn-mini btn-primary" type="button">Pick</button>

在此HTML forloop内显示帖子:

{% for Post in latest_posts %}  

{{Post.id }}
{{Post.author}}
{{Post.title}}
//button comes here.

{% endfor %}

我的jQuery代码是:

$(document).ready(function () {
$('#click').click(function (){
  console.log("create post is working!")
  var pickid;
  pickid = $(this).attr("data-id");
    $.post('create_date/', {pickid: pickid}, function(data){
        alert('Button click recorded.')
      });    
})
  });

和我的观点:

def record_button_click(request, *args, **kwargs):

if request.is_ajax() and request.method == 'POST':
    id = request.POST.get('pickid')
    response_data = {}
    form=Pick(post=id,user=request.user)
    response_data = {}
    form.save()

    response_data['result'] = 'Create post successful!'

    return HttpResponse(
        json.dumps(response_data),
        content_type="application/json"
    )
else:
    return HttpResponse(
        json.dumps({"nothing to see": "this isn't happening"}),
        content_type="application/json"
    )

使用此代码,我们的想法是当用户点击“选择”按钮时将信息保存到选择表:

class Pick(models.Model):
    user=models.ForeignKey(User)
    post=models.ForeignKey(Post)
    pick_date = models.DateTimeField('date picked',default=datetime.datetime.now())

我在这里做错了什么?

提前致谢

2 个答案:

答案 0 :(得分:0)

以下是我的代码中的错误元素:

  • @DanielRoseman:删除id并在类上绑定jQuery监听器。
  • Jquery代码中的
  • :将{pickid: pickid},添加到$.post方法
  • 视图代码中的
  • 更改以下行:form=Pick(post_id=id,user=request.user)

答案 1 :(得分:0)

您没有为POST添加{% csrf_token %}。要么这样做,要么在视图文档here中有@csrf_exempt。希望有所帮助。