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

Django语言切换表单仅默认语言首页生效 其余页面切换失败排查

问题原因

Django内置的set_language视图完成语言切换后,需要明确指定跳转路径。你当前的表单没有传递next参数,视图会默认读取HTTP请求头的Referer字段进行跳转,在非首页路径下会出现语言前缀替换失败的问题,最终跳转回原语言的路径,表现为切换没有生效。

修复步骤

  1. 修改语言切换表单,添加next隐藏字段
    你需要在表单中显式传入当前页面的路径,让set_language可以正确生成对应语言的目标跳转路径,修改后的表单代码如下:

    {% get_current_language as lang_code %}
    {% get_available_languages as languages %}
    {% get_language_info_list for languages as langs %}
    <form action="{% url 'set_language' %}" method="POST">
    {% csrf_token %}
    <!-- 新增next隐藏字段,传入当前页面路径 -->
    <input type="hidden" name="next" value="{{ request.path }}">
    <select name="language" title="{% translate 'Language' %}">
    {% for lang in langs %}
    <option value="{{ lang.code }}"{% if lang.code == lang_code %} selected{% endif %}>
    {{ lang.name_local }} ({{ lang.name_translated }})
    </option>
    {% endfor %}
    </select>
    <input type="submit" value="OK" />
    </form>
    

    如果你的页面路径需要保留查询参数,可以把{{ request.path }}替换为{{ request.get_full_path }}。

  2. 确认模板上下文已注入request对象
    检查settings.py中TEMPLATES配置项,确保OPTIONS.context_processors列表包含django.template.context_processors.request,否则模板无法获取request变量,会导致next参数为空。示例配置如下:

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request', # 确保有这一行
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    

配置校验

你现有的其他配置是正确的:

  • LocaleMiddleware放在SessionMiddleware之后、CommonMiddleware之前,符合官方要求的顺序
  • set_language路由放在非i18n_patterns包裹的普通路由中,避免路径带语言前缀导致匹配失败
  • prefix_default_language=False的配置不会影响语言切换逻辑

内容的提问来源于stack exchange,提问作者Danijela Popović

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:06:07