当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django i18n_patterns用法及代码示例


本文介绍 django.conf.urls.i18n.i18n_patterns 的用法。

声明

i18n_patterns(*urls, prefix_default_language=True)

该函数可以在根 URLconf 中使用,Django 会自动将当前活动语言代码添加到 i18n_patterns() 中定义的所有 URL 模式。

prefix_default_language 设置为 False 会从默认语言 ( LANGUAGE_CODE ) 中删除前缀。这在将翻译添加到现有站点时很有用,这样当前的 URL 就不会改变。

示例 URL 模式:

from django.conf.urls.i18n import i18n_patterns
from django.urls import include, path

from about import views as about_views
from news import views as news_views
from sitemap.views import sitemap

urlpatterns = [
    path('sitemap.xml', sitemap, name='sitemap-xml'),
]

news_patterns = ([
    path('', news_views.index, name='index'),
    path('category/<slug:slug>/', news_views.category, name='category'),
    path('<slug:slug>/', news_views.details, name='detail'),
], 'news')

urlpatterns += i18n_patterns(
    path('about/', about_views.main, name='about'),
    path('news/', include(news_patterns, namespace='news')),
)

在定义了这些 URL 模式之后,Django 会自动将语言前缀添加到由i18n_patterns 函数添加的 URL 模式中。例子:

>>> from django.urls import reverse
>>> from django.utils.translation import activate

>>> activate('en')
>>> reverse('sitemap-xml')
'/sitemap.xml'
>>> reverse('news:index')
'/en/news/'

>>> activate('nl')
>>> reverse('news:detail', kwargs={'slug': 'news-slug'})
'/nl/news/news-slug/'

使用 prefix_default_language=FalseLANGUAGE_CODE='en' ,URL 将是:

>>> activate('en')
>>> reverse('news:index')
'/news/'

>>> activate('nl')
>>> reverse('news:index')
'/nl/news/'

警告

i18n_patterns() 仅允许在根 URLconf 中使用。在包含的 URLconf 中使用它会引发 ImproperlyConfigured 异常。

警告

确保您没有可能与 automatically-added 语言前缀冲突的非前缀 URL 模式。

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.conf.urls.i18n.i18n_patterns。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。