【发布时间】: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