Django Ajax Модал не выскакивает и форма не отображается - PullRequest
0 голосов
/ 22 марта 2020

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

мой дом / дом. html где кнопка, которая должна открыть сообщение:

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

мой модал и скрипт в одном файле:

<div class="modal fade" id="modal-post">
  <div class="modal-dialog">
    <div class="modal-content"></div>
  </div>
</div>
<script>
  $(document).ready(function(){
    $('.show-form').click(function(){
        $.ajax({
            url: '/home/post/create',
            type: 'get',
            dataType:'json',
            beforeSend: function(){
                $('#modal-post').modal('show');
            },
            success: function(data){
                $('#modal-post .modal-content').html(data.html_form);
            }
        });
    });
    $('#modal-post').on("submit",".create-form", 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;
    })
});
</script>

мои взгляды на создание сообщения:

@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')

Я не получаю сообщение об ошибке, просто ничего не происходит, я не знаю, в чем проблема.

РЕДАКТИРОВАТЬ: Я хочу добавить, что даже в консоли я не вижу, что ссылка извлекается просто ничего не происходит, когда я нажимаю на кнопку.

Заранее спасибо!

...