Перенаправление проблем с формой django в модальном

#python #html #jquery #django #forms

#python #HTML #jquery #django #формы

Вопрос:

Я пытаюсь реализовать модальную форму, которая ориентирована на изменение комментария в сообщении, то, как я это сделал, все работает, проблема в том, что когда я нажимаю на кнопку отправки, она отправляет меня в html, в котором у меня есть модальный, и там я редактирую комментарий. когда я пытаюсь удалить URL-адрес в форме действия, которая переводит меня на вторую страницу моей формы, она выдает ошибку «локальная переменная ‘form’, на которую ссылаются перед назначением», также, если я помещаю, например, в действие формы, URL-адрес входа отправляет меня туда, но комментарий не обновляется и не редактируется.

Моя идея заключается просто в том, что когда я отправляю форму, модальная закрывается, и страница, на которой модальная была открыта с самого начала, перезагружается или просто появляется уже отредактированный комментарий.

если вам нужна дополнительная информация, я могу ее добавить.

views.py

 @need_analyst_role
def comment_modify(request, comment_id):

    if 'comment_edit' in request.POST:
        form_comment = FormComment(request.POST)
        if form_comment.is_valid():
            comment_text = form_comment.cleaned_data['text']
            comment = ModelRiskTracking.objects.get(id=comment_id)
            comment.comment = comment_text
            print(comment.comment)
            comment.save()

        else:
            messages.error(request, 'Error!', extra_tags="danger")
   
    context = {}
    context['comment'] = ModelRiskTracking.objects.get(id=comment_id)
    
    return render(request, 'analyst_pages/comment_edit.html', context = context)
  

modal.html

 <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
    <div class="modal-content">
        <div class="modal-header">
            <h2 class="modal-title">Editar comentario</h2>
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">amp;times;</span>
            </button>
        </div>
        <form action="{% url 'soc_irisk_modify' comment_id=comment.id %}" method="POST">
            {% csrf_token %}
            <textarea type="text" name="text" class="form-control" rows="15">{{ comment.comment|safe }}</textarea>
            <div class="modal-footer">
                <input type="submit" value="Actualizar" name="comment_edit" onsubmit="setFormSubmitting()" class="btn btn-info btn-sm pull-right" />
            </div>
        </form>
    </div>
</div>
  

Я открываю модальный режим с помощью кнопки, вызывающей функцию jQuery:

 <script type="text/javascript">
    function openModal(url){
        $('#commentModal').load(url, function(){
            $(this).modal('show');
        });
    }
</script>


<button type="button" class="btn btn-primary btn-sm pull-right" data-toggle="modal" data-target="#commentModal" onclick="openModal('{% url 'soc_comment_modify' comment_id=comment.id %}')">
  

Ответ №1:

при сохранении модели вам необходимо перенаправить пользователя

 @need_analyst_role
def comment_modify(request, comment_id):

    if 'comment_edit' in request.POST:
    form_comment = FormComment(request.POST)
    if form_comment.is_valid():
        comment_text = form_comment.cleaned_data['text']
        comment = ModelRiskTracking.objects.get(id=comment_id)
        comment.comment = comment_text
        print(comment.comment)
        comment.save()
        return redirect("some_url")

    else:
        messages.error(request, 'Error!', extra_tags="danger")
        return redirect("some_url")

context = {}
context['comment'] = ModelRiskTracking.objects.get(id=comment_id)

return render(request, 'analyst_pages/comment_edit.html', context = context)
  

Комментарии:

1. это сработало, я пробовал раньше с «return HttpResponseRedirect», который я прочитал в другом ответе, но это не сработало, по-видимому, это было проще, чем это, большое вам спасибо за ваш ответ и время!!