2017-06-06 2 views
1

Ich möchte ein Sprachpräfix in URL-Mustern hinzufügen, genau wie die Django-Dokumentations-Homepage. Im Anschluss an diese example meine urls.py wie folgt aussieht:name 'urlpatterns' ist nicht definiert, wenn man eine Übersetzung macht (+ = 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), 
] 

Das funktioniert aber jetzt, wenn ich hinzufügen += i18n_patterns

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

ich den Fehler: Nameerror: name 'urlpatterns' ist nicht

definiert

I füge die LocalMiddleware hinzu:

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

sowie das:

LANGUAGE_CODE = 'en-us' 

USE_I18N = True 

USE_L10N = True 

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

Ich verstehe nicht, wie urlpatterns ganz plötzlich nicht mehr definiert ist. Was mache ich hier falsch?

+1

Haben Sie 'i18n_patterns (..)' anstelle von 'i18n_patterns [..]' ausprobiert? – codekaizer

+0

ja, ich habe versucht, auch, hat nichts geändert – Tom

+1

'urlpatterns + = i18n_pattern' sollte 'urlpatterns = i18n_patterns' – karthikr

Antwort

2

In erster Linie wegen +=. Es gibt keine vorherige Definition von urlpatterns.

Sie sollten mit der Zuweisung = beginnen, um es zu definieren.

+0

ahhhhhh, danke, hätte ich selbst gesehen – Tom

Verwandte Themen