2017-06-06 78 views
1

我想在URL模式中添加語言前綴,就像django文檔主頁一樣。在此之後exampleurls.py看起來是這樣的:名稱'urlpatterns'在翻譯時未定義(+ = i18n_patterns)

from django.conf.urls import include, url 
from django.conf.urls.i18n import i18n_patterns 
from django.contrib import admin 

from myapp import views 
from myapp.views import MyFirstView, MySecondView 

myapp_patterns = [ 
    url(r'^$', views.CategoryView, name='index'), 
    url(r'^(?P<name>[a-zA-Z0-9_]+)/$', MyFirstView.as_view(), name='detail'), 
    url(r'^(?P<name>[a-zA-Z0-9_]+)/mysecond_view/$', MySecondView, name='mysecond_view') 
] 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^categories/', include(myapp_patterns)), 
    url(r'^', views.LandingView), 
] 

這工作,但現在當我添加+= i18n_patterns

urlpatterns += i18n_patterns [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^categories/', include(myapp_patterns)), 
    url(r'^', views.LandingView), 
] 

我得到的錯誤:NameError:名字 'URL模式' 沒有定義

我確實添加了LocalMiddleware

MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    ... 
] 

以及本:

LANGUAGE_CODE = 'en-us' 

USE_I18N = True 

USE_L10N = True 

LOCALE_PATHS = (
     os.path.join(BASE_DIR, 'locale'), 
) 

我不明白怎麼urlpatterns所有的突然不再被定義。 我在這裏做錯了什麼?

+1

你試過'i18n_patterns(..)'而不是'i18n_patterns [..]'嗎? – codekaizer

+0

是的,我也試過,沒有改變任何東西 – Tom

+1

'urlpatterns + = i18n_patterns'應該是'urlpatterns = i18n_patterns' – karthikr

回答

2

主要是因爲+=。以前沒有定義urlpatterns

您應該從作業=開始定義它。

+0

ahhhhhh,謝謝,可以看到我自己 – Tom