如何解决如何通过单击没有任何形式的按钮来更新 django 模型的数据?
我正在处理一个 Django 项目。我的动机是通过简单地点击一个按钮来更新数据库中状态的值。我不想提交任何表格。这是我试过的:
Models.py
class auction_listing(models.Model):
title = models.CharField(max_length=100)
status = models.BooleanField(default=True)
def __str__(self):
return f"{self.id} : {self.title} "
这里的状态是布尔字段。默认情况下它是真的。这里不需要任何表格,但我希望通过单击按钮来更改此状态。这是我的 HTML 模板中的按钮。
template.html
<div style="margin-top: 2%;">
<form action="{% url 'status' list.id %}" method="POST">
{% csrf_token %}
<button type="submit" class="btn btn-danger">Close</button>
</form>
</div>
这是我的 views.py 函数:
views.py
def status(request,list_id):
listing = auction_listing.objects.get(pk=list_id)
if request.method == "POST" and listing.status is True:
listing.status = False
listing.save()
else:
listing.status = True
listing.save()
return HttpResponseRedirect(reverse("displaylistitem",kwargs={"list_id":list_id}))
urls.py
path("<int:list_id>",views.display_list,name="displaylistitem"),path("<int:list_id>",views.status,name="status"),
这就是我尝试的全部。问题是当我按下按钮时,它只是刷新页面,而不是更新数据库中状态的值。
解决方法
你可以使用ajax来做到这一点。只需在单击按钮时调用 javascript 函数并使用 ajax 请求 django 视图。
<div style="margin-top: 2%;">
<form action="{% url 'status' list.id %}" method="POST">
{% csrf_token %}
<button onclick="DoSomething();" class="btn btn-
danger">Close</button> // added onlick="DoSomething();"
</form>
</div>
<script>
function DoSomething(){
data = 'some data'
$.ajax({
type: 'POST',url: 'getuser/',data: data,processData: false,contentType: false,success: function(json) {
alert(json);
}
})
}
</script>
您也可以通过向按钮添加事件处理程序来实现这一点。 查看这个很棒的答案here 它可能对您有更多帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。