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

Django中/LS/mark-text-responses/ URL AJAX请求404问题求助

Django AJAX请求返回404:URL路径不匹配问题解决

从服务器日志可明确:前端实际发送的请求URL是/mark-text-responses/,但后端配置的有效URL是/LS/mark-text-responses/,同时前端代码硬编码的请求路径是/lessons/mark-text-responses/——三者完全不匹配,这就是404错误的核心原因。

解决方案

方案1:直接修正前端硬编码URL路径

将JavaScript中fetch的请求路径替换为后端实际配置的URL:

// 原代码
fetch('/lessons/mark-text-responses/', { ... })
// 修改后
fetch('/LS/mark-text-responses/', { ... })

方案2:使用Django模板标签生成URL(推荐)

避免硬编码URL导致的路径不一致问题,利用Django的{% url %}模板标签动态生成正确路径:

  • 如果JavaScript代码直接写在Django模板文件中,直接替换为:
fetch("{% url 'mark_text_responses' %}", {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'X-CSRFToken': document.querySelector('input[name="csrfmiddlewaretoken"]').value
    },
    body: JSON.stringify({
        activity_id: '{{ activity.id }}',
        question_index: index,
        text_response: textResponse
    })
})
  • 如果JavaScript是单独的外部文件,可在模板中通过全局变量传递URL:
<!-- 在模板的<script>标签中定义全局变量 -->
<script>
const MARK_TEXT_RESPONSES_URL = "{% url 'mark_text_responses' %}";
</script>
<!-- 引入外部JS文件 -->
<script src="{% static 'js/your-script.js' %}"></script>

然后在外部JS中使用该变量:

fetch(MARK_TEXT_RESPONSES_URL, { ... })

额外验证步骤

  1. 确认项目根urls.py已将LM应用的URL挂载到/LS/路径下:
# 根urls.py
from django.urls import path, include

urlpatterns = [
    # ...
    path('LS/', include('LM.urls')),
    # ...
]
  1. 修改后刷新页面,点击提交按钮,查看浏览器开发者工具「网络」面板,确认请求URL为/LS/mark-text-responses/且返回状态码200。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 02:07:29