我在python views.py,urls.py和models.py中编写了一个函数,但它似乎没有在数据库中存储东西。需要帮助才能将其存储回数据库。我提供了html,views.py,urls.py和models.py代码
views.py:
@login_required
def job_status_update(request):
status = request.GET['status']
job_id = request.GET['Jobid']
if status == 'Active':
flag = True
else:
flag = False
job = Job.objects.get(pk=job_id)
try:
job.active = flag
job.save()
return HttpResponse(status)
except Exception as e:
return JsonResponse(status)
urls.py:
url(r'^job/status_update/?status=active&jobid=\d+', views.job_status_update),
models.py:
active = models.BooleanField(default = True)
HTML:
<span style="padding-left:50px;"></span>
<b> Status</b>: {% if job.active %}
<b>Active</b>
{% else %}
<b>Deactive</b>
{% endif %}
<span style="padding-left:140px;"></span>
<button type="button" id ="Active" class="btn btn-primary" onClick="doTask(this.id)">Activate</button>
<button type="button" id ="Deactive" class="btn btn-primary" onClick="doTask(this.id)">Deactivate</button>
<script type="text/javascript">
function doTask(id){
$.ajax({
//url: '/job/status_update/?status=' + id + '&Jobid=' + {job.id},
url: 'job/status_update/?status=active&jobid=\d+',
//active =
data: {
'csrfmiddlewaretoken':
$('input[name="csrfmiddlewaretoken"]').val(),
'status': id,
'Jobid': {{job.id}}
},
dataType: 'json',
complete: function (response) {
$('#status').html(response.responseText);
location.reload();
},
error: function () {
$('#status').html('Bummer: there was an error!');
},
});
return false;
}
</script>
答案 0 :(得分:0)
网址格式不应包含查询字符串。将其更改为:
url(r'^job/status_update/', views.job_status_update),
然后,在您的JavaScript中,您不应该使用jobid=\d+
。我会使用您注释掉的行,但删除job.id
周围的大括号:
url: '/job/status_update/?status=' + id + '&Jobid=' + job.id,
答案 1 :(得分:0)
尝试使用下面的
编辑代码HTML
<button type="button" data-status ="Active" class="btn btn-primary do-task" data-job="{{job.id}})">Activate</button>
<button type="button" data-status ="Deactive" class="btn btn-primary do-task" data-job="{{job.id}})">Deactivate</button>
<强>视图强>
@login_required
def job_status_update(request):
status = request.GET.get('status')
job_id = request.GET.get('Jobid')
if status == 'Active':
flag = True
else:
flag = False
job = Job.objects.get(pk=job_id)
try:
job.active = flag
job.save()
return HttpResponse(status)
except Exception as e:
return JsonResponse(status)
<强>网址强>
url(r'^job/status_update/', views.job_status_update),
<强>的javascript 强>
$(document).on('click','.do-task',function(){
var status = $(this).data('status'),
id = $(this).data('job');
$.ajax({
url: '/job/status_update/',
type:'get',
data: {
'csrfmiddlewaretoken':$('input[name="csrfmiddlewaretoken"]').val(),
'status': status,
'Jobid': id,
}
},
complete: function (response) {
$('#status').html(response.responseText);
},
error: function () {
$('#status').html('Bummer: there was an error!');
},
});