【发布时间】:2019-10-22 00:42:01
【问题描述】:
我需要检查请求路径是否在 i18n_pattern 之外,即它不应该有 'lang' 前缀。例如,我有以下 urls.py:
urlpatterns = [
path('api/', include('api.urls'), name='api'),
]
urlpatterns += i18n_patterns(
path('', include('core.urls'), name='index'),
prefix_default_language=False
)
'api' 的reverse 表明无论使用什么语言,它都不会作为前缀。有没有其他方法可以找出当前请求的路径不包含在i18n_patterns 中?谢谢!
【问题讨论】:
-
您能解释一下为什么需要检查吗?你想做什么?也许这不是正确的方法。
-
@dirkgroten 我正在扩展 LocaleMiddleware 的功能,以使结合 prefix_default_language=False 和语言自动检测成为可能(我提到了这个问题here。所以中间件应该能够确定情况什么时候不应该像我的示例中的 /api/smth 请求那样触摸请求/响应。在我的应用程序中,我通过硬编码异常暂时解决了这个问题,但想找到正确的方法
-
request.resolver_match给你一个ResolverMatch对象,记录在here。有了这个,你可以得到一个namespace,也许如果你在某个地方列出你的非翻译命名空间,你可以检查一下。 -
@dirkgroten 谢谢!这似乎是一个很好的出路
标签: python django django-urls django-i18n