Django国际化配置问题:根路径访问触发404错误需跳转首页
解决方案
问题根源在于你所有URL都包裹在i18n_patterns中,根路径/没有对应的路由规则,因此触发404错误。以下是两种可行的解决方式:
方式一:添加根路径重定向路由
在主urls.py中,在i18n_patterns之外添加一个根路径路由,直接重定向到默认语言的首页:
from django.shortcuts import redirect from django.urls import path, include from django.conf import settings urlpatterns = [ # 根路径重定向到默认语言首页 path('', lambda request: redirect(f'/{settings.LANGUAGE_CODE}/')), ] + i18n_patterns( # 原有的URL配置,比如首页路由 path('', include('baseApp.urls')), # 其他带语言前缀的路由... )
确保settings.py中LANGUAGE_CODE已设置为你需要的默认语言(比如'en'),同时LANGUAGES配置正确:
LANGUAGES = [ ('en', 'English'), # 其他支持的语言 ] USE_I18N = True
方式二:利用LocaleMiddleware自动重定向
确保settings.py的MIDDLEWARE中包含django.middleware.locale.LocaleMiddleware,并且放在CommonMiddleware之后:
MIDDLEWARE = [ # ...其他中间件 'django.middleware.common.CommonMiddleware', 'django.middleware.locale.LocaleMiddleware', # ...其他中间件 ]
这个中间件会根据用户的浏览器语言偏好自动重定向到对应语言的路径;如果没有匹配到偏好语言,则使用LANGUAGE_CODE指定的默认语言。若你希望强制根路径跳转至默认语言首页,方式一更直接。
内容的提问来源于stack exchange,提问作者alessio mirra
相关产品推荐
相关产品推荐

