У меня есть форма комментария в Django, и после отправки комментария есть это модальное всплывающее окно, которое отображает некоторый текст, но появляется только в течение нескольких секунд, пока страница не перенаправится. Но я хочу, чтобы модальный был там до тех пор, пока я вручную не нажму кнопку «крест» (или где-либо вне модального окна), а затем страница должна перенаправить на указанное место.Django - Перенаправить только после закрытия JavaScript-мода вручную
views.py:
def add_comment_to_project(request,pk):
post = get_object_or_404(Project, pk=pk)
if request.method == "POST":
form = CommentForm(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.post = post
comment.save()
return redirect('project_detail', pk=pk) //here it redirects.
else:
form=CommentForm()
return render(request, 'portfolio/add_comment_to_project.html', {'form':form})
add_comment_to_project.html:
{% extends 'portfolio/base.html' %}
{% block content %}
<h1>New Comment</h1>
<form method="POST" class="project-form">
{% csrf_token %}
{{ form.as_p }}
<button id="myBtn" type="submit" class="save btn btn-default">Send</button>
</form>
<!-- the Modal (prompt after clicking the send button) -->
<div id="mymodal" class="modal">
<!-- Modal Content -->
<div class="modal-content">
<span class="close">×</span>
<p>Thank you for your response ! :).<br>It has been recorded. It will be displayed once it has been approved by the author.</p>
</div>
</div>
{% endblock %}
JavaScript:
// Get the modal
var modal = document.getElementById('mymodal');
// Get the button that opens the modal
var btn = document.getElementById("myBtn");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];
// When the user clicks the button, open the modal
btn.onclick = function() {
modal.style.display = "block"; //as initially, the display is none.
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
modal.style.display = "none";
event.preventdefault();
/*window.location.reload();*/
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
Я искал много для того же, но не смогли найти соответствующий ответ как это сделать в Django.
Я хочу, чтобы он был перенаправлен на «Project_detail.html» только после того, как модальный файл закрыт вручную, а не сразу после отправки комментария. Пожалуйста помоги. Заранее большое спасибо.
Я понял логику вашего кода, но как свой jQuery в своем фрагменте, и, поскольку я не очень хорошо знаком с ним, не могли бы вы прокомментировать свой фрагмент и объяснить, что именно происходит? в основном вторая часть, начиная с '$ .post (window ...)'. спасибо –
как я писал, когда вы нажимаете на ссылку, появляется модальное окно. Когда вы нажимаете кнопку в модальном окне, он отправляет запрос на отправку. Тем не менее, моя часть кода не включает контекст (временную переменную), которую вы, вероятно, также должны передавать с помощью почтового запроса. –