Python 如何在HTML中单击按钮时更改django中的值?
我正在尝试实现一个函数,当我单击Activate按钮时,Django数据库中该字段的值将变为“Active”,并在HTML页面上显示为Active。如果单击deactivate,文本将与django数据库中的值一起更改为deactive 这是我当前的HTML页面:Python 如何在HTML中单击按钮时更改django中的值?,python,html,django,button,Python,Html,Django,Button,我正在尝试实现一个函数,当我单击Activate按钮时,Django数据库中该字段的值将变为“Active”,并在HTML页面上显示为Active。如果单击deactivate,文本将与django数据库中的值一起更改为deactive 这是我当前的HTML页面: <div class="col-sm-5"> <div class="panel panel-primary"> <div class="panel-heading">
<div class="col-sm-5">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Job activation status</h3>
</div>
<div class="panel-body">
<b>Status</b>: Active
<span style="padding-left:20px;"></span>
<button type="button" class="btn btn-primary">Activate</button>
<button type="button" class="btn btn-primary">Deactivate</button>
<button type="button" class="btn btn-primary">Dissolve</button>
</div>
</div>
</div>
我需要帮助在models.py中添加一个字段,该字段会根据HTML中的按钮单击进行更改,并根据单击的按钮在HTML页面中显示active/deactive。我还需要相应修改HTML页面的帮助如果您只需要两个状态active和InActive,则需要一个布尔字段,因此在您的模型中添加如下内容:
active = models.BooleanField(default = False)
然后,您需要在views.py中创建一个函数来更新数据库中的模型,我将其命名为ajax\u change\u status:
from django.http import JsonResponse
from xxx.models import Job
def ajax_change_status(request):
active = request.GET.get('active', False)
job_id = request.GET.get('job_id', False)
# first you get your Job model
job = Job.objects.get(pk=job_id)
try:
job.active = active
job.save()
return JsonResponse({"success": True})
except Exception as e:
return JsonResponse({"success": False})
return JsonResponse(data)
然后,在url.py中添加url for your ajax函数:
url(r'^ajax/change_status/$', views.ajax_change_status, name='ajax_change_status')
最后,在HTML中,每次单击按钮时都需要调用函数:
<script>
$("#button_id").on('click', function () {
var username = $(this).val();
var active = <true> // or false, you have to set it
var active = <id> // you have to set it
$.ajax({
url: '/ajax/validate_username/',
data: {
'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val(),
'active': active
'job_id': username
},
dataType: 'json',
success: function (data) {
if (data.success) {
alert("ajax call success.");
// here you update the HTML to change the active to innactive
}else{
alert("ajax call not success.");
}
}
});
});
</script>
如果只需要两个状态active和InActive,则需要一个布尔字段,因此在模型中添加如下内容:
active = models.BooleanField(default = False)
然后,您需要在views.py中创建一个函数来更新数据库中的模型,我将其命名为ajax\u change\u status:
from django.http import JsonResponse
from xxx.models import Job
def ajax_change_status(request):
active = request.GET.get('active', False)
job_id = request.GET.get('job_id', False)
# first you get your Job model
job = Job.objects.get(pk=job_id)
try:
job.active = active
job.save()
return JsonResponse({"success": True})
except Exception as e:
return JsonResponse({"success": False})
return JsonResponse(data)
然后,在url.py中添加url for your ajax函数:
url(r'^ajax/change_status/$', views.ajax_change_status, name='ajax_change_status')
最后,在HTML中,每次单击按钮时都需要调用函数:
<script>
$("#button_id").on('click', function () {
var username = $(this).val();
var active = <true> // or false, you have to set it
var active = <id> // you have to set it
$.ajax({
url: '/ajax/validate_username/',
data: {
'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val(),
'active': active
'job_id': username
},
dataType: 'json',
success: function (data) {
if (data.success) {
alert("ajax call success.");
// here you update the HTML to change the active to innactive
}else{
alert("ajax call not success.");
}
}
});
});
</script>
如果您试图在不重新加载页面的情况下在数据库中进行此更改,则需要调用ajax函数来更新数据库中的此值。如果不是您的情况,那么您只需要执行标准表单提交。我确实希望在更改数据库时重新加载页面。我需要编写代码方面的帮助。在django代码中编写一个视图,该视图将更改数据库中的值,然后在按下[活动,非活动]按钮时使用js ajax调用该视图已由用户触发。如果您试图在数据库中执行此更改而不重新加载页面,则需要调用ajax函数来更新数据库中的此值。如果不是您的情况,那么您只需要执行标准表单提交。我确实希望在更改数据库时重新加载页面。我需要编写代码方面的帮助。在django代码中编写一个视图,该视图将更改数据库中的值,然后在用户触发按钮[active,inactive]时使用js ajax调用该视图