用于将信息存储到Django中的DB的Ajax脚本

时间:2014-10-17 17:11:51

标签: javascript jquery ajax django views

概述:

在我的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视图来存储这些信息吗?

1 个答案:

答案 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"
        )