Я использую такие виды для обработки модальных окон с формой. Вы можете проверить подробное объяснение этого подхода здесь. https://dmorgan.info/posts/django-views-bootstrap-modals/ Все работает нормально, но представленные данные не отображаются в представлении my_orders после перенаправление на это представление. Я вижу запрос GET в/my_orders/в консоли Chrome. И ответ содержит представленные данные. Но кажется, что этот ответ не кажется на мой взгляд. Может быть, это вызвано ответом XHR?Перенаправленная страница не отображается после отправки модальной формы
В то же время перенаправление отлично работает в этом методе, и после перенаправления у меня есть фактическое представление my_orders.
def delete_order(request, id):
Order.objects.filter(id = id).delete()
return redirect('currency_exchange.views.my_orders')
views.py
def my_orders(request):
queryset = Order.objects.filter(user=get_user(request))
context = {
"queryset": queryset
}
return render(request, "my_orders.html", context)
class AjaxTemplateMixin(object):
def dispatch(self, request, *args, **kwargs):
if not hasattr(self, 'ajax_template_name'):
split = self.template_name.split('.html')
split[-1] = '_inner'
split.append('.html')
self.ajax_template_name = ''.join(split)
if request.is_ajax():
self.template_name = self.ajax_template_name
return super(AjaxTemplateMixin, self).dispatch(request, *args, **kwargs)
class AddOrderView(SuccessMessageMixin, AjaxTemplateMixin, FormView, CreateView):
model = Order
template_name = 'add_order_form.html'
form_class = OrderForm
success_url = reverse_lazy('my_orders')
success_message = "Way to go!"
def form_valid(self, form):
order = form.save(commit=False)
order.user = self.request.user
order.save()
return redirect('currency_exchange.views.my_orders')
JS:
var formAjaxSubmit = function(form, modal) {
$(form).submit(function (e) {
e.preventDefault();
$.ajax({
type: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize(),
success: function (xhr, ajaxOptions, thrownError) {
if ($(xhr).find('.has-error').length > 0) {
$(modal).find('.modal-body').html(xhr);
formAjaxSubmit(form, modal);
} else {
$(modal).modal('toggle');
}
},
error: function (xhr, ajaxOptions, thrownError) {
}
});
});
}
Добавить JS на вопрос –
OK. Итак, где в этом JS-коде есть то, что изменяет URL-адрес? –
Вещь, которая изменяет URL-адрес, находится в коде python: 'return redirect ('currency_exchange.views.my_orders')'. По крайней мере, он работает В случае 'def delete_order()' –