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?
Avez-vous essayé 'i18n_patterns (..)' au lieu de 'i18n_patterns [..]'? – codekaizer
oui, j'ai essayé que, aussi, n'a rien changé – Tom
'urlpatterns + = i18n_patterns' devrait être 'urlpatterns = i18n_patterns' – karthikr