2017-06-06 6 views
1

Je souhaite ajouter un préfixe de langue dans les modèles d'URL, tout comme la page d'accueil de la documentation django. À la suite de cette example mon urls.py ressemble à ceci:Le nom 'urlpatterns' n'est pas défini lors de la traduction (+ = 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), 
] 

Cela fonctionne, mais maintenant quand j'ajoute += i18n_patterns

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

Je reçois l'erreur: NameError: nom 'urlpatterns' est pas défini

I a ajouté le LocalMiddleware:

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

ainsi que ceci:

LANGUAGE_CODE = 'en-us' 

USE_I18N = True 

USE_L10N = True 

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

Je ne comprends pas comment urlpatterns tout à coup ne définit pas plus. Qu'est-ce que je fais mal ici?

+1

Avez-vous essayé 'i18n_patterns (..)' au lieu de 'i18n_patterns [..]'? – codekaizer

+0

oui, j'ai essayé que, aussi, n'a rien changé – Tom

+1

'urlpatterns + = i18n_patterns' devrait être 'urlpatterns = i18n_patterns' – karthikr

Répondre

2

Principalement à cause de +=. Il n'y a pas de définition précédente de urlpatterns.

Vous devez commencer par l'affectation = pour le définir.

+0

ahhhhhh, merci, aurait pu voir que moi-même – Tom