65 votes

Avertissement de dépréciation de Django ou erreur ImproperlyConfigured - La transmission d'un 3-tuple à django.conf.urls.include() n'est pas prise en charge.

J'ai un avertissement de dépréciation dans Django 1.11 :

RemovedInDjango20Warning: Passing a 3-tuple to django.conf.urls.include() is deprecated. Pass a 2-tuple containing the list of patterns and app_name, and provide the namespace argument to include() instead.
  url(r'^admin/', include(admin.site.urls))

Dans Django 2.0, cela donne l'erreur suivante :

django.core.exceptions.ImproperlyConfigured: Passing a 3-tuple to include() is not supported. 
Pass a 2-tuple containing the list of patterns and app_name, and provide the namespace argument to include() instead.

Comment dois-je changer url(r'^admin/', include(admin.site.urls)) ? J'ai essayé de consulter la documentation, mais je n'ai aucune idée ...

Voici mon urls.py :

from django.conf.urls import include, url
from django.contrib import admin
admin.autodiscover()

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^admin/django-ses/', include('django_ses.urls')),
    url(r'^api/1.0/', include('feedcrunch_api_v1.urls')),
    url(r'^oauth/', include('oauth.urls')),
    url(r'^@(?P<feedname>\w+)/admin/', include('feedcrunch_rssadmin.urls')),
    url(r'^@(?P<feedname>\w+)/', include('feedcrunch_rssviewer.urls')),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    url(r'', include('feedcrunch_home.urls')),
]

3 votes

D'ailleurs, vous pouvez supprimer admin.autodiscover() -- il n'a pas été demandé depuis Django 1.7 .

125voto

Alasdair Points 36535

À partir de Django 1.9, l'ancienne façon d'inclure les urls d'administration est dépréciée . Vous devriez passer admin.site.urls directement à url() sans l'appel à include() :

from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    ...
]

1voto

2achary Points 177

J'ai eu du mal avec ça sur mon Macbook. J'avais un environnement virtuel activé avec Django 2.0 installé. Mais django-admin pointait toujours vers une installation au niveau du système à partir d'une ancienne version de django. Ma solution a été de désinstaller l'installation système de django. Après cela, django-admin pointait vers la nouvelle version de virtualenv.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X