Я мало что знаю о js, но я попытался отправить данные, нажав кнопку
Проект находится на стадии утверждения или отклонять заказы на панели владельца магазина
В администрировании Django все прошло хорошо, и я могу изменить его через интерфейс администратора, но я также хочу, чтобы он был удобным для пользователя, чтобы владелец магазина мог одобрить запросите, нажав кнопку «Утвердить», и отклоните его, нажав кнопку «Отмена».
В заключение я хочу создать логику, согласно которой всякий раз, когда владелец нажимает кнопку «Утвердить», ожидающее решение в базе данных меняется на «Утверждено», и то же самое для отклонить
Когда я нажимаю кнопку (отклонить или утвердить), появляется ошибка 405.
Мои представления.py:
Код: Выделить всё
def update_appointment_status(request: HttpRequest):
timeslice_id = request.GET.get('timeslice_id') status = request.GET.get('status') timeslice = get_object_or_404(TimeSlice, id=timeslice_id)
if status == 'approve': timeslice.approve()
elif status == 'refuse': timeslice.refuse()
return JsonResponse({'success': True})
Код: Выделить всё
$(document).ready(function() {
// Approve button click handler
$('.approve-btn').click(function(event) {
event.preventDefault();
var timesliceId = $(this).data('id');
$.ajax({
url: '/approve/', // Adjust the URL to your specific endpoint
type: 'POST',
data: {
'timeslice_id': timesliceId,
'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val()
},
success: function(response) {
alert('Appointment approved.');
location.reload();
},
error: function(xhr, status, error) {
alert('Error: ' + error);
}
});
});
// Refuse button click handler
$('.refuse-btn').click(function(event) {
event.preventDefault();
var timesliceId = $(this).data('id');
$.ajax({
url: '/refuse/', // Adjust the URL to your specific endpoint
type: 'POST',
data: {
'timeslice_id': timesliceId,
'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val()
},
success: function(response) {
alert('Appointment refused.');
location.reload();
},
error: function(xhr, status, error) {
alert('Error: ' + error);
}
});
});
});
Код: Выделить всё
{% for slice in time_slices %}
{% if slice.business_line == barber %}
[*]
{{ slice.start_time }} - {{ slice.end_time }}
State: {{ slice.get_appointment_state_display }}
{% csrf_token %}
Approve
Refuse
{% endif %}
{% endfor %}
Подробнее здесь: https://stackoverflow.com/questions/787 ... d-approved
Мобильная версия