Обновление таблицы Django с помощью Ajax
Я хочу обновлять данные моего шаблона django с помощью Ajax. Я хочу позволить пользователям обновлять статус из выпадающего списка, и это должно отражаться без обновления страницы. Пожалуйста, обратитесь к этому
Помогите пожалуйста, я застрял в этом
Шаблон Django
{% for vulnerability in vulnerabilitys %}
<tr>
<th scope="row" >{{vulnerability.id}}A{{vulnerability.sNo}}</th>
<td>{{vulnerability.vul_title}}</td>
<td>{% for asset in vulnerability.asset.all %}{{asset}}<br>{% endfor %}</td>
<td><span
{% if vulnerability.severity|lower == 'info' %} class="badge rounded-pill bg-info"
{% elif vulnerability.severity|lower == 'high' %} class="badge rounded-pill bg-danger"
{% endif %}>
{{vulnerability.severity}}</span></td>
<td>{{vulnerability.vul_url}}</td>
<td>{{vulnerability.last_seen|date:'d-m-Y H:i'}} <i class='fas fa-clock' style='color:rgb(48, 75, 228)'></i></td>
<td><select id="ab" data-item = {{vulnerability.id}} qty-item="{{vulnerability.status}}" class="update" onchange="if (this.selectedIndex) doSomething();">
{% if vulnerability.status == 'Open' %}
<option value="{{ vulnerability.status }}">{{ vulnerability.status }}</option>
<option value="InProgress">InProgress</option>
<option value="Fixed">Fixed</option>
</select>
{% elif vulnerability.status == 'InProgress' %}
<option value="{{ vulnerability.status }}">{{ vulnerability.status }}</option>
<option value="Open">Open</option>
<option value="Fixed">Fixed</option>
</select>
{% else %}
<option value="{{ vulnerability.status }}">{{ vulnerability.status }}</option>
<option value="InProgress">InProgress</option>
<option value="Open">Open</option>
</select>
{% endif %}
<h5>{{vulnerability.status}}</h5></td>
</tr>{% endfor %}
скрипт в шаблоне
$(document).on('change', '.update', function(){
// var item = $(this).closest('tr');
// editItem(item);
var pid = $(this).attr('data-item');
var stat = $(this).attr('qty-item');
var x = document.getElementById("ab").value;
console.log("OLD",stat);
console.log("NEW",x)
var elem = document.getElementById('myTable2');
elem.style.color = 'green';
$.ajax({
url:'/statUpdate/',
data:{'pid': pid, 'stat':stat, 'x':x},
// dataType:'json',
success: function(data){
// $('h5').html(data);
}
});
});
views.py
def vul_update(request):
if (request.session['namee'] == 'none'):
return redirect(home)
username = request.session['namee']
pid = request.GET['pid']
stat = request.GET['stat']
x = request.GET['x']
print(pid)
print(stat)
vulnerabilities.objects.filter(id = pid).update(status = x)
a= vulnerabilities.objects.filter(id = pid)
print(a[0].status)
vulnerability = vulnerabilities.objects.filter(organisation__name = username)
context = {'username': username, 'vulnerabilitys': vulnerability}
# t = render_to_string('ajax/vul.html', context)
# return JsonResponse({'data':t})
success = a[0].status
return HttpResponse(success)
Это не работает должным образом, пожалуйста, скажите мне, что я делаю неправильно? Я хочу позволить клиенту обновлять статус и он должен обновляться в моделях django также без обновления страницы