У меня есть этот жирный GET
запрос в ajax
.
Является ли это GET request
в некотором роде д плохой практикой, учитывая зацикливание элементов?
let pages = 0;
$.ajax({
url: '/posts/',
method: 'GET',
dataType: 'json',
success: function (data) {
let totalObjects = Object.keys(data.posts).length.toString();
# check how much pages should be displayed based on data length
let rows = '';
data.posts.forEach(post => {
rows +=
'<tr class="postTable" style="display: none;">' +
'<th scope="row"><input type="checkbox" aria-label="Checkbox" style="display: none"></row>' +
'<td class="tm-product-name"><a href="' + '/posts/' + post.slug + '/edit/">' + post.title + ' </a></td>' +
'<td class="text-center">145</td>' +
'<td class="text-center">' + post.total_likes + '</td>' +
'<td>' + post.created_at + '</td>' +
'<td><i class="fas fa-trash-alt tm-trash-icon" id="delete-icon" data-id="'+ post.slug + '"></i></td>' +
'</tr>';
});
$('tbody').append(rows);
let current_page = '';
let tables = document.getElementsByClassName('postTable');
$('#pagination-test').twbsPagination({
totalPages: pages,
visiblePages: 5,
onPageClick: function (event, page) {
console.log('ALARMM');
current_page = page;
console.log('PAGE Changed');
console.log('Page: ' + current_page);
switch (current_page) {
# here i'm looping all the elements via switch case for pagination.
}
},
});
}
});
ajax POST
$(document).on('click','tr[class="postTable"] td i[id="delete-icon"]' ,function () {
let action = confirm('Are you sure you want to delete this post?');
let slug = $(this).attr('data-id');
console.log(slug);
let url = '/posts/' + slug + '/delete/';
if (action != false) {
$.ajax({
method: 'POST',
url: url,
dataType: 'json',
data: slug,
success: function (data) {
$('post_table').remove()
}
});
}
});
Просмотры
class PostList(JSONResponseMixin, AjaxResponseMixin, ListView):
template_name = 'dashboard/posts.html'
context_object_name = 'user_posts'
ordering = ['created_at']
def get_queryset(self):
profile = Profile.objects.get(user_id=self.request.user.id)
return Post.objects.get_user_posts(profile.id)
def get_ajax(self, request, *args, **kwargs):
posts = list(self.get_queryset().values())
data = dict()
data['posts'] = posts
return self.render_json_response(data)
class DeletePost(CsrfExemptMixin, SingleObjectMixin, View):
model = Post
def post(self, *args, **kwargs):
self.object = self.get_object()
self.object.delete()
data = {'success': 'OK'}
return JsonResponse(data)
Технически все работает, данные удаляются, они отображаются только после обновления страницы sh