【问题标题】:{% url %} tag add twice the localized prefix in django{% url %} 标签在 django 中添加两倍的本地化前缀
【发布时间】:2012-09-04 21:12:09
【问题描述】:

使用 Django 版本 1.5.dev17942 我有这个设置:

settings.py:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',

    #'maintenancemode.middleware.MaintenanceModeMiddleware',
)

使用 urls.py:

urlpatterns = patterns('',
    # Api
    url(r'^api/bestSeller/', include('apps.pluginApi.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

urlpatterns += i18n_patterns('',
    # Core:
    url(r'^$', views.index, name='home'),
    url(r'teleport/signup/(?P<plan>\w+)', views.teleport_signup, name="teleportSignup"),
    url(r'teleport/account$', views.teleport_account, name="teleportAccount"),
    url(r'teleport/login$', views.teleport_login, name="teleportLogin"),
    url(r'teleport', views.teleport, name="teleport"),
)

urlpatterns += staticfiles_urlpatterns()

当我使用模板标签时:

{% url 'teleportSignup' 'teleportplan1' %}

我得到这个网址:

/es/es/teleport/signup/teleportplan1

注意是两次“es”。初始 URL(呈现页面)是 /es/teleport

我看不出是什么原因造成的。或者如何避免它..

【问题讨论】:

  • 这是因为您使用的 i18n_patterns 前缀。 docs.djangoproject.com/en/dev/topics/i18n/translation/… Django 会添加语言前缀?
  • 前缀是django自己加的,然后url标签加两次。
  • 你能尝试一件事吗? url(r'^teleport .. 对于所有 URL?如果有任何错误,这可能会抛出 404。
  • 这样会生成相同的 URL,并在点击时得到 404。删除它,url是一样的,但它找到了页面。

标签: python django localization django-views url-routing


【解决方案1】:

真的很愚蠢。我在 https://bitbucket.org/carljm/django-localeurl 中有一个依赖项,来自旧项目。这也是生成语言环境 url,所以有两次的原因......

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多