簡體   English   中英

提交模式表單后,重定向頁面無法呈現

[英]Redirected page isn't rendering after submitting modal form

我使用這樣的視圖來處理帶有form的模態窗口。你可以在這里檢查這種方法的詳細解釋https://dmorgan.info/posts/django-views-bootstrap-modals/一切正常,但提交的數據沒有出現在重定向到此視圖后的my_orders視圖。 我在Chrome控制台中看到了對/ my_orders /的GET請求。 響應包含提交的數據。 但似乎在我看來,這種反應並沒有呈現出來。 也許,這是由XHR反應引起的?

同時redirect在這個方法中運行正常,重定向后我得到了實際的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。 但是,如果您要發送Ajax請求,則需要在JS代碼中執行某些操作以實際執行重定向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM