【问题标题】:Django Jquery button "pick a post"Django Jquery 按钮“选择一个帖子”
【发布时间】:2014-12-14 14:18:00
【问题描述】:

在 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"
    )

使用此代码,想法是在用户单击“pick”按钮时将信息保存到pick表中:

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

我在这里做错了什么?

提前致谢

【问题讨论】:

  • 很难说,因为你没有说发生了什么。但是一个问题是您不能拥有多个具有相同 ID 的 HTML 元素。去掉id,在类上绑定jQuery监听器,即.click
  • 感谢@DanielRoseman,这解决了一个问题!我仍然在控制台中收到此错误:POST http://127.0.0.1:8000/post/create_date/ 500 (INTERNAL SERVER ERROR) XHR finished loading: POST "http://127.0.0.1:8000/post/create_date/" 并且我没有在数据库中存储任何内容
  • 您应该查看浏览器的开发者工具,“网络”选项卡应该会显示后端发送的实际错误消息。
  • @DanielRoseman ,感谢您的帮助!

标签: jquery html ajax django django-views


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-17
      • 2016-07-16
      • 2019-03-25
      • 1970-01-01
      相关资源
      最近更新 更多