【发布时间】: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