У меня есть вопрос относительно отправки данных из шаблона на сервер с использованием Ajax или встроенных Django методов. Рассмотрим следующий пример:
Что я имею в виду под Django Методы:
views.py:
def block_user(request, lobby):
target_id = util.get_other_user(Chat.objects.get(lobby=lobby), request.user).id
request.user.profile.block(User.objects.get(id=target_id))
return HttpResponseRedirect(reverse('chat-explicit', kwargs={'lobby': lobby}))
шаблон:
<button type="button" class="btn btn-danger" id="block-user-btn" onclick="location.href='{% url 'user-block' chatroom.lobby %}';">Block</button>
Что я имею в виду, используя Ajax:
views.py:
def block_user(request):
lobby = request.POST.get("lobby", None)
target_id = util.get_other_user(Chat.objects.get(lobby=lobby), request.user).id
request.user.profile.block(User.objects.get(id=target_id))
return HttpResponse('')
шаблон:
<button type="button" class="btn btn-danger" id="block-user-btn">Block</button>
<script>
$("#block-user-btn").click(function() {
$.ajax({
headers: { "X-CSRFToken": getCookie("csrftoken") },
url: "{% url 'block-user' %}",
data: {
'lobby': '{{ lobby }}'
},
type: 'post',
dataType: 'json',
async: false,
success: function(data) {
location.reload();
},
failure: function(data) {
console.log("error");
}
});
});
</script>
Оба методы работают, но какой из них быстрее? или какой из них лучше использовать?
1) В этом случае ответ сервера просто говорит javascript перезагрузить страницу. Рассматривая другие случаи:
2) Что, если я хочу загрузить другую страницу в качестве ответа? Что было бы лучше практиковать тогда?
3) И что было бы лучше, если бы я не хотел ни перенаправлять пользователя, ни перезагружать страницу, а просто отправлять данные на сервер и запускать сервер код стороны?