概述:
在我的django项目中显示新闻Feed页面中的帖子,我希望用户能够“选择”帖子(即Pinterest中的pin)。我们的想法是创建一个“选择”按钮,自动将信息存储在Pick表中(下面定义的模型)。
class Post(models.Model):
picks=models.ManyToManyField(User, through='Pick',related_name='UserPicks')
…
class User (models.Model):
…
和
class Pick(models.Model):
user=models.ForeignKey(User)
post=models.ForeignKey(Post)
pick_date = models.DateTimeField('date picked',default=datetime.datetime.now())
问题
问题是通过按下按钮选择而不要求用户填写任何表格,自动并直接向后端发送信息。
问题
我想在新闻提要HTML页面中使用Ajax,以便在用户选择帖子时将user.id,post.id和日期选择发送到数据库的Pick表(通过按选择按钮)。
您能指导我使用适当的Ajax函数和相应的django视图来存储这些信息吗?
答案 0 :(得分:0)
知道{{Post.id}}
返回帖子的ID,我们的按钮是:
<a class="click" data-id="{{ Post.id }}" class="btn btn-mini btn-primary" type="button">Pick</a>
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):
if request.method == 'POST':
pick_id = request.POST.get('pickid')
response_data = {}
form=Pick(post_id=pick_id,user=request.user)
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"
)