Python 如何在HTML中单击按钮时更改django中的值?

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">

我正在尝试实现一个函数,当我单击Activate按钮时,Django数据库中该字段的值将变为“Active”,并在HTML页面上显示为Active。如果单击deactivate,文本将与django数据库中的值一起更改为deactive

这是我当前的HTML页面:

   <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调用该视图