Django Ajax - $.在没有调用任何服务器端视图的情况下执行get方法成功函数

Django Ajax - $.get method success function executed without ANY server-side view called

本文关键字:情况下 视图 执行 get 函数 成功 方法 服务器端 任何 Ajax 调用      更新时间:2023-09-26

删除前面的问题,稍微澄清一下。

我有一个Django驱动的网站和一个模板与动态填充表。

模板:

<table id = 'my_table'>
   <thead>
      ......
   </thead>
   <tbody>
   </tbody>
</table>
Javascript

$(function () 
{
    refresh_vendors_list_table();
});
function refresh_vednors_list_table()
{
    $.get("/ajax_refresh_vendors_list_table/", function(response) 
    {
        $('#my_table').find('tbody').html(response);
    });
}

视图:

def ajax_refresh_vendors_list_table(request):
    template = 'vendors/vendors_list_paginator.html'
    vendors_qs = vendors_qs.filter(...)
    context = {'vendors_qs':vendors_qs}
    return render_to_response(template,
                              context,
                              context_instance=RequestContext(request))

表模板(vendors_list_paginator.html)

{% load el_pagination_tags %}
{% paginate vendors_qs %}   
{% for vendor in vendors_qs %}
    <tr>
         ......
     </tr>
{% endfor %}
{% show_more_table %}

当按下表中的每一行时,我被重定向到相应的供应商的配置文件。编辑完配置文件后,我按下返回按钮,再次返回到表页面。在这个阶段,我开始调试$.get("/ajax_refresh_vendors_list_table/", data, function(response)我还在template = 'vendors/vendors_list_paginator.html'设置了一个断点(让我们称之为断点a )

$.get函数中观察到一个非常奇怪的行为:相应的Django视图没有被调用(我没有看到我的应用程序在中断A时停止),然而$('#my_table').find('tbody').html(response);被直接执行,就像$。Get函数应该成功执行!!!!

也就是说,$。get函数在没有任何服务器端参与的情况下执行(我强调any这个词)。起初,我认为可能是我弄乱了URLConf文件,调用了其他视图。为了检查这一点,我在按下浏览器后退按钮之前清除了Django IDE控制台,按下它之后,在Django IDE控制台没有看到任何东西,这意味着$。get请求成功执行,没有调用任何视图!!它与分页有关吗?我完全迷路了。请帮忙!

根据Sardorbek的回答,我在定义ajax_refresh_vendors_list_table

之前包含了以下装饰器
@require_http_methods(["GET"])
@never_cache
def ajax_refresh_vendors_list_table(request):
   ...

嗯…看起来您的浏览器正在缓存此请求。尝试用never_cache

包装此url
never_cache(url(...))