#python #django
Вопрос:
Я пытаюсь использовать модальное всплывающее окно в качестве формы редактирования, но я не знаю хорошего способа.
В настоящее время мой views.py вот так.
#update dependency management
def update_jiradata(Request,id):
if Request.method == 'POST':
pi = jira_Story.objects.get(pk=id)
fm = jira_StoryReg(Request.POST, instance=pi)
if fm.is_valid():
fm.save()
fm = jira_StoryReg()
return HttpResponseRedirect('/DependencyManagement')
else:
pi = jira_Story.objects.get(pk=id)
fm = jira_StoryReg(instance=pi)
jira = jira_Story.objects.all()
return render(Request, 'hello/EditManagement.html', {'jiraform': fm, 'JIRA': jira})
Вот файлы шаблонов для представления:
{% extends 'hello/Dependency_Management.html'%}
{% block editmanagement %}
<style>
</style>
<div id="myModal1" class="modal1">
<div class="modal-content1">
<span class="close1">amp;times;</span>
<div class="row">
<div class="col-sm-8 offset-2">
<h4 class="alert alert-info">Update JIRA Stories</h4>
<form action="" method="post">
{% csrf_token %}
{{jiraform.as_p}}
<input type="submit" value="Update" class="btn btn-success">
<!-- <a href="{% url 'addrow' %}" class="btn btn-info">Back to Dashboard</a> -->
</form>
</div>
</div>
</div>
</div>
<script>
// document.getElementById('parameter').style.display = 'none';
</script>
{% endblock editmanagement %}
Я хочу что-то подобное, как только нажму на кнопку «Просмотр».
Ответ №1:
Я делаю это так, чтобы представление возвращало фрагмент html-формы, и с помощью Ajax, когда пользователь нажимает кнопку «Обновить», мы помещаем html в модальный формат и открываем модальный для пользователя.
Комментарии:
1. Эй, @Mohamed, если вы не возражаете, можете привести мне пример. Так как я очень новичок в этой области. Будет более полезно, если вы дадите мне какой-нибудь фрагмент кода
Ответ №2:
Создайте один HTML-файл для своей формы:
<form action="" method="post">
{% csrf_token %}
{{jiraform.as_p}}
<input type="submit" value="Update" class="btn btn-success">
<a href="{% url 'addrow' %}" class="btn btn-info">Back to Dashboard</a>
</form>
Основной HTML-файл должен иметь что-то вроде этого:
<div id="myModal1" class="modal1">
<div class="modal-content1">
<span class="close1">amp;times;</span>
<div class="row">
<div class="col-sm-8 offset-2">
<h4 class="alert alert-info">Update JIRA Stories</h4>
<div id="form-jiraform"></div>
</div>
</div>
</div>
</div>
В вашем файле js:
$(document).on('submit', 'form', function (event) {
const form = $(this).closest('form');
event.preventDefault();
const modal = $('#myModal1');
$.ajax({
type: form.attr('method'),
url: form.attr('action'),
data: form.serialize(),
success: function (data) {
$("#form-jiraform").html(data);
modal.modal('show');
}
}
)
});
в вашем views.py файл:
def show_form_with_ajax(request):
if not request.is_ajax():
return BadRequets
fm = jira_StoryReg(instance=pi)
return render(request, 'address_to_form_html.html',{'jiraform':fm})