Django CRUD Ajax - PullRequest
       4

Django CRUD Ajax

0 голосов
/ 20 марта 2020

Я создаю приложение, в котором я хочу, чтобы пользователи могли создавать сообщения. Однако, когда я добавил функциональные возможности, после создания кнопки «Post» ничего не происходит, я вижу, что Django не получает URL в консоли.

Вот мой Ajax код для создания, обновления и удаление, обновление и удаление работают нормально, однако создание не работает.

$(document).ready(function(){
    var ShowForm = function(){
        var btn = $(this);
        $.ajax({
            url: btn.attr("data-url"),
            type: 'get',
            dataType:'json',
            beforeSend: function(){
                $('#modal-post').modal('show');
            },
            success: function(data){
                $('#modal-post .modal-content').html(data.html_form);
            }
        });
    };

    var SaveForm =  function(){
        var form = $(this);
        $.ajax({
            url: form.attr('data-url'),
            data: form.serialize(),
            type: form.attr('method'),
            dataType: 'json',
            success: function(data){
                if(data.form_is_valid){
                    $('#post-list div').html(data.posts);
                    $('#modal-post').modal('hide');
                } else {
                    $('#modal-post .modal-content').html(data.html_form)
                }
            }
        })
        return false;
    }

// create 
$(".show-form-create").click(ShowForm);
$("#modal-post").on("submit",".create-form",SaveForm);

//update
$('#post-list').on("click",".show-form-update",ShowForm);
$('#modal-post').on("submit",".update-form",SaveForm)

//delete
$('#post-list').on("click",".show-form-delete",ShowForm);
$('#modal-post').on("submit",".delete-form",SaveForm)
});

Это мои views.py:

@login_required
def save_all(request,form,template_name):
    data = dict()
    if request.method == 'POST':
        if form.is_valid():      
            form.save()
            data['form_is_valid'] = True
            posts = Post.objects.all()
            data['posts'] = render_to_string('home/home_post.html',{'posts':posts})
        else:
            data['form_is_valid'] = False
    context = {
    'form':form
    }
    data['html_form'] = render_to_string(template_name,context,request=request)
    return JsonResponse(data) 

@login_required
def post_create(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
    else:
        form = PostForm()
    return save_all(request, form, 'home/post_create.html')

И вот кнопка, которую я использую:

<button class="btn btn-sm btn-primary show-form-create ml-auto" data-url="{% url 'home:post-create' %}">Post</button> 

Когда я изменяю show-form-create на show-form-delete , всплывает PostForm, однако, когда я меняю его обратно, кажется, что это не так за работой. Я был по этому вопросу в течение некоторого времени, я не могу найти причину проблемы.

Это также доступно в моем urls.py:

path('post/create/', views.post_create, name='post-create'),

Я заранее благодарен за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...