You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板通过AJAX定时刷新值时出现404 URL未找到错误排查

问题排查与修复方案

核心问题:404错误的根源

你的/ajax_data请求出现404,是因为urls.py中没有配置该路径的路由,Django找不到对应的视图函数处理请求。下面是完整的修复步骤:


1. 配置AJAX路由(解决404)

在urls.py中添加ajax_data的路由,同时补充视图函数的导入:

# urls.py
from main.views import IndexPageView, ChangeLanguageView, ControlPageView, ViewPageView, ajax_data  # 新增ajax_data导入

urlpatterns = [
    # 保留原有所有路由
    path('ajax_data/', ajax_data, name='ajax_data'),  # 新增该路由配置
]

2. 完善视图函数(避免运行报错)

补充views.py缺失的依赖导入,同时修复潜在的索引越界问题:

# views.py
import random
import json
from django.http import Response  # 必须导入Response类

temp_values = [1, 2, 3, 3, 4, 5, 5, 6, 6, 7]

def get_temp():
    # 改为动态获取列表长度,避免索引越界
    return temp_values[random.randint(0, len(temp_values)-1)]

def ajax_data(request):  # 新增request参数,Django视图必须接收该参数
    data = {'temp': get_temp()}
    json_data = json.dumps(data)
    # 替换已废弃的mimetypes为content_type
    return Response(json_data, content_type='application/json')

3. 修复前端AJAX逻辑(实现温度更新)

调整control.html中的JS代码,处理响应数据、修正选择器、匹配需求的更新间隔:

<script src="http://code.jquery.com/jquery-3.0.0.js"></script>
<script language="javascript" type="text/javascript">
function updateValue() {
    $.ajax({
        url:"/ajax_data/",  // 与urls.py配置的路径保持一致
        success: function(response) {
            var tempData = JSON.parse(response);
            // 用val()设置输入框值(而非placeholder),修正选择器为.curr_temp(类选择器需加.)
            $(".curr_temp").val(tempData.temp);
        }
    });
}
$(document).ready(function(){
    // 改为10000毫秒(10秒),移除冗余变量避免冲突
    setInterval(updateValue, 10000);
});
</script>

4. 额外优化建议

  • 删除ControlPageView中冗余的index方法,TemplateView默认已实现基础的请求处理逻辑;
  • 前端的开关checkbox建议添加name和id属性,方便后续功能扩展;
  • 可使用$.getJSON简化AJAX请求代码:
    function updateValue() {
        $.getJSON("/ajax_data/", function(data) {
            $(".curr_temp").val(data.temp);
        });
    }
    

内容的提问来源于stack exchange,提问作者xerxes01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:55:18