在更改一个参数时重定向到同一视图

时间:2017-05-31 02:36:38

标签: python django django-views

我有一个ajax调用,它会向我的view函数发送一个国家/地区标签:

视图

posts

我成功获取了ajax数据但是在此之后我该怎么做才能使用新的setTimeout值重定向到同一个视图?

4 个答案:

答案 0 :(得分:0)

如果您使用的是Ajax。您必须在Ajax post call的window.location.reload();方法中使用success

答案 1 :(得分:0)

正如我读到您正在使用Ajax: 重新加载@Himanshu dua的功能说好了 我应该检查你使用URL和VIEW的方式

$x = Category::whereHas('products', function ($query) {
     $query->where('products.active', 1);
})->where('categories.active', 1)
->get();

或者您应该尝试使用通过ajax从服务器获取的新DATA替换旧的(只需使用Jquery更改值)

答案 2 :(得分:0)

它不会那样工作。

在HTML页面上,使用Javascript,你应该:

  • (1)发送AJAX调用(GET / POST)以加载视图功能 后端
  • (5)接收视图功能的输出并随意执行任何操作。

在后端,使用视图功能,你应该:

  • (2)从前端(HTML)
  • 接收GET / POST数据
  • (3)做任何你想做的事。
  • (4)使用HttpResponse
  • 将函数的输出作为JSON返回
  

注意每个项目旁边的数字。它发生在那   序列从1到5。

以下是一个例子:

  1. 在HTML页面(Javascript)上:
  2. 
        var posts;
        $("button").click(function(){
            $.post("/test/", function(data, status){
                posts = data;
                console.log(data);
            });
        });
    
    
    1. 在后端(Python):
    2. 
          import json
          from django.http import HttpResponse
      
          def test(request):
              if request.method == 'POST': 
                  country = request.POST.get('country')
                  posts = Post.objects.filter(country=country)
                  return HttpResponse( json.dumps(posts) )
              else:
                  return HttpResponse( "error" )
      
      

答案 3 :(得分:0)

在您的示例中,视图返回呈现的模板:boxes.html。要做到这一点,你必须要么

  • 修改视图以使用查询参数(例如/my/url?country=nowhere)。这将适用于GET请求而不是帖子,您可以通过URL轻松调用它。

  • 或使用html表单而不是AJAX请求。表单可以轻松地POST到端点,它将加载您的Web服务器返回的任何内容。

Ajax调用旨在与服务器交换数据,而不是真正用于下载整个网页。因此,如果你想使用ajax,你可以让你的视图返回一个json / xml /任何对象列表,然后使用js将它们注入你的页面:

function successCallback(data) {
  var elem = document.getElementById('myelement');
  elem.innerHTML = data; 
}