Django view not rendering after Ajax redirect

后端 未结 1 1667
鱼传尺愫
鱼传尺愫 2020-12-21 04:00

The main page of my website has multiple buttons at the top. Whenever one of these buttons is pushed, a get request is sent to a django view, which is redirected and a query

相关标签:
1条回答
  • 2020-12-21 04:10

    You can not use Django redirect in your case. When you send an ajax request you usually expect a json response, and based on that you can redirect the user via your JavaScript code.

    $.ajax({
      // You send your request here
    }).done(function(data) {
      // You can handle your redirection here
    });
    

    Here is how you can handle a redirect with your setup, you pass back a JsonResponse from django with the next page that you want to go to:

    from django.http import JsonResponse
    
    def ajax_filter(request):
        if request.is_ajax():
            gender_filter = request.GET.get('gender_filter') #filter type
            if gender_filter is not None:
                return JsonResponse({
                    'success': True,
                    'url': reverse('filtered_index', args=[gender_filter]),
                })
        return JsonResponse({ 'success': False })
    

    In JS, you use done (or success) function to grab the URL from the passed back JsonResponse and redirect to that URL using window.location.href:

    $.ajax({
      // You send your request here
    }).done(function (data) {
        if (data.success) {
            window.location.href = data.url;
        }    
    });
    
    0 讨论(0)
提交回复
热议问题