在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())
我在这里做错了什么?
提前致谢
答案 0 :(得分:0)
以下是我的代码中的错误元素:
{pickid: pickid},
添加到$.post
方法form=Pick(post_id=id,user=request.user)
答案 1 :(得分:0)
您没有为POST添加{% csrf_token %}
。要么这样做,要么在视图文档here中有@csrf_exempt
。希望有所帮助。