javascript - 如何通过ajax Django发布复选框数据?
问题描述
如何is_read
使用 ajax 将复选框字段提交到数据库中?当我尝试勾选复选框字段时,我收到此错误core.models.Article.DoesNotExist: Article matching query does not exist.
模型.py
class Article(models.Model):
title = models.CharField(max_length=300)
is_read = models.BooleanField(default=False)
视图.py
@csrf_exempt
def Story_status_update(request):
if request.method == 'POST':
pk = request.POST.get('pk')
item = Article.objects.get(id=pk)
print(item)
item.is_read = True
item.save()
return JsonResponse({'succes': True}, status=200)
else:
return JsonResponse({'succes': False, 'errors': []}, status=400)
html
<tbody>
{% for object in articles %}
<tr data-pk="{{ object.id }}">
<td>{{ object.title }}</td>
<td><input type="checkbox" data-id="{{ object.id }}" name="is_read" id="id_is_read" /></td>
</tr>
{% endfor %}
</tbody>
ajax.js
$("#id_is_read").click(function () {
var pk = $('tr').attr("data-pk");
$.ajax({
type: "Post",
contentType: "application/json;",
url: "{% url 'status-update' %}",
data: { pk: pk },
dataType: "json",
success: function (response) {
console.log(response)
},
});
});
解决方案
我不确定 Django 部分,但是
对于 Html,您正在创建多个具有相同 id 的复选框,这是无效的,请改用一个类。
<tbody>
{% for object in articles %}
<tr data-pk="{{ object.id }}">
<td>{{ object.title }}</td>
<td><input type="checkbox" data-id="{{ object.id }}" name="is_read" class="class_is_read" /></td>
</tr>
{% endfor %}
</tbody>
对于 JavaScript,使用类作为选择器并选择正确的行。
此外,内容类型错误,因为您没有发送 JSON,因此请删除contentType
$(".class_is_read").click(function () {
var pk = $(this).closest('tr').attr("data-pk"); // select the correct row
$.ajax({
type: "POST",
url: "{% url 'status-update' %}",
data: { pk: pk },
dataType: "json",
success: function (response) {
console.log(response)
},
});
});
推荐阅读
- python - Df到sql到python中的Teradata
- apollo-server - 如何在没有 Apollo Server 但使用 express-graphql 的情况下使用 apollo-datasource-rest
- angular - 自定义单元格组件的 AgGrid 行 autoHeight
- jenkins - Jenkins 声明式管道:如何重命名“声明式:发布操作”步骤?
- python - 计算 Python 中的事件数
- python - 有没有办法在 Flask-RESTPlus 中显示长字段描述,并在文本框中使用缩短的文本
- javascript - 如何在后面的 C# 代码中获取 JavaScript 变量值
- reactjs - 如何编写依赖于 React 中 useState 钩子的条件渲染组件的测试?
- delphi - Datasnap 获取 10054 - 套接字错误 #10054 连接被对等方重置。在 TDBXCommand.Prepare 中
- redirect - IIS:将多个 URL 重定向到同一个网站