我的其中一个网址没有翻译,给我404错误

时间:2018-05-13 15:51:05

标签: django python-3.6

我目前在使用this approach的Django 1.11上遇到翻译和网址格式问题。

这是我的 urls.py

from django.conf.urls import url  # noqa
from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import gettext_lazy as _

from core.views import HomeView, SolutionsView, SolutionView


urlpatterns = [
    url(r'^$', HomeView.as_view(), name='home'),
    url(_(r'^solucoes$'), SolutionsView.as_view(), name='solutions'),
    url('{solutions}/{solution}$'.format(
        solutions=_(r'^solucoes'),
        solution='(?P<slug>[\w-]+)'
    ), SolutionView.as_view(), name='solution')
]

名称为solutions的网址有效,但solution没有,导致404错误,即使我翻译并运行compilemessages命令也是如此。

1 个答案:

答案 0 :(得分:0)

在urlpatterns上使用.format不起作用。我注意到正确的方法(在documentation中使用)是将整个网址包装在_中。

错:

url('{solutions}/{solution}$'.format(
            solutions=_(r'^solucoes'),
            solution='(?P<slug>[\w-]+)'
        ), SolutionView.as_view(), name='solution')

正确:

url(_(r'^solucoes/(?P<slug>[\w-]+)/$'), SolutionView.as_view(), name='solution')