繁体   English   中英

Django Ajax-$ .get方法成功函数的执行无需调用任何服务器端视图

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

删除了前面的问题,以澄清它。

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

模板:

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

Java脚本

$(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包装此网址

never_cache(url(...))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM