Python函数不存储在django数据库中

时间:2018-05-05 20:05:23

标签: python django

我在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>

2 个答案:

答案 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!');
    },
});
相关问题