Как изменить значение в django базе данных при нажатии кнопки в HTML? - PullRequest
0 голосов
/ 30 апреля 2020

В моей модели hostelApplication есть логическое поле, я хочу изменить это поле с помощью кнопки html, но я не очень разбираюсь в js. Пожалуйста, кто-нибудь, скажите мне, что я делаю не так. вот мой models.py, я показал только необходимые файлы.

class hostelApplication(models.Model):
    hostelName = models.CharField(verbose_name='Select Hostel', max_length=20, choices=hostels, default='shivalik')
    isApproved = models.BooleanField(default=False)

    def __str__(self):
        return self.hostelName

Я добавил свой URL-адрес в URL, как

url(r'^ajax/change_status/$', views.ajax_change_status, name='ajax_change_status')

, вот мой html файл

{% for application in applications %}
    {% csrf_token %}
    <div class="table-content">
        <div class="table-row">
        <div class="table-data">{{application.hostelName}}</div>
        <div class="table-data">{{application.dateApplied}}</div>
        <div class="table-data">
            <button type="button" class="btn btn-info" id="state">Approve</button>
        </div>
    </div>
{% endfor %}

Я добавил этот скрипт js в этот шаблон сверху

<script>
     $("#state").on('click', function () {
     var username = $(this).val();
     var isApproved = true // or false, you have to set it
     var id = application.id // you have to set it
     $.ajax({
        url: '/ajax/change_status/',
        data: {
              'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val(),
              'isApproved': isApproved
              '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>

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020
$("#btn").click(function(){

        $.ajax(
            {
                type:"POST",
                url: "/load_layout/",
                data:{
                # Some data u want to sand               
                },
                success: function( respData ) 
                {
                    alert("Sent to python");
                },
                error: function (jqXHR, status, err) {
                    alert("Local error callback.");
                    return "error";
                  }
             });
})

в ur views.py

def load_layout(request):
 data = request.POST['data_name_give in_ajax_req']
 user1 = database_object.object.get(name=data)
 user1.name = xyz
 user1.save()
 return some templete

, если это не работает, позвоните мне kiranu941@gmail.com

0 голосов
/ 30 апреля 2020

некоторые ошибки с синтаксисом js. каждая строка должна заканчиваться точкой с запятой, а каждый элемент объекта (data = {}) должен заканчиваться запятой.

...