Después de actualizar a Django 4.0, recibo el siguiente error cuando python manage.py runserver
... File "/path/to/myproject/myproject/urls.py", line 16, in <module> from django.conf.urls import url ImportError: cannot import name 'url' from 'django.conf.urls' (/path/to/my/venv/lib/python3.9/site-packages/django/conf/urls/__init__.py)
Mi urls.py es el siguiente:
from django.conf.urls from myapp.views import home urlpatterns = [ url(r'^$', home, name="home"), url(r'^myapp/', include('myapp.urls'), ]
Creo que una solución rápida a este problema es hacer lo siguiente;
Puedes reemplazar fácilmente
from django.conf.urls import url
a esto:
from django.urls import re_path as url
Y mantenga el resto del código igual que antes. (Gracias @Alasdair)
django.conf.urls.url()
quedó en desuso en Django 3.0 y se eliminó en Django 4.0+.
La solución más fácil es reemplazar url()
con re_path()
. re_path
usa expresiones regulares como url
, por lo que solo tiene que actualizar la importación y reemplazar la url
con re_path
.
from django.urls import include, re_path from myapp.views import home urlpatterns = [ re_path(r'^$', home, name='home'), re_path(r'^myapp/', include('myapp.urls'), ]
Alternativamente, puede cambiar a usar path
. path()
no usa expresiones regulares, por lo que tendrá que actualizar sus patrones de URL si cambia a la ruta.
from django.urls import include, path from myapp.views import home urlpatterns = [ path('', home, name='home'), path('myapp/', include('myapp.urls'), ]
Si tiene un proyecto grande con muchos patrones de URL para actualizar, puede encontrar útil la biblioteca django-upgrade para actualizar sus archivos urls.py
Ver en django versión 4.0 no funcionará. Entonces, al instalar Django en su entorno virtual, seleccione esta versión
pip instalar django==3.2.10
Esto definitivamente resolverá su error y en main urls.py haga esto:
de django.conf.urls url de importación
desde la ruta de importación de django.urls, incluir