programing

ImportError: Django 4.0으로 업그레이드한 후 'django.conf.urls'에서 'url' 이름을 가져올 수 없습니다.

i4 2023. 9. 13. 22:20
반응형

ImportError: Django 4.0으로 업그레이드한 후 'django.conf.urls'에서 'url' 이름을 가져올 수 없습니다.

장고 4.0으로 업그레이드 후 실행 시 다음과 같은 오류가 발생합니다.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)

제 urls.py 은 다음과 같습니다.

from django.conf.urls

from myapp.views import home

urlpatterns = [
    url(r'^$', home, name="home"),
    url(r'^myapp/', include('myapp.urls'),
]

django.conf.urls.url()는 장고 3.0에서 폐지되었고, 장고 4.0+에서 삭제되었습니다.

가장 쉬운 해결책은 교체하는 것입니다.url()와 함께re_path다음과 같은 정규어를 사용합니다.url, 따라서 가져오기와 교체만 업데이트하면 됩니다.url와 함께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'),
]

또는 로 전환할 수도 있습니다.path()regexes를 사용하지 않으므로 경로로 전환하면 URL 패턴을 업데이트해야 합니다.

from django.urls import include, path

from myapp.views import home

urlpatterns = [
    path('', home, name='home'),
    path('myapp/', include('myapp.urls'),
]

업데이트할 URL 패턴이 많은 대규모 프로젝트가 있는 경우, django-upgrade 라이브러리가 업데이트에 유용합니다.urls.py서류철

이 문제를 빨리 해결하려면 다음과 같이 해야 한다고 생각합니다.

쉽게 교체할 수 있습니다.

from django.conf.urls import url

다음 항목에 대해:

from django.urls import re_path as url

그리고 나머지 코드는 이전과 동일하게 유지합니다. (Thanks @Alasdair)

장고 버전 4.0에서는 작동하지 않습니다.따라서 가상 환경에 Django를 설치할 때 이 버전을 선택합니다.

pip 설치 django==3.2.10

이렇게 하면 오류가 확실히 해결되고 메인 urls.py 에서 다음 작업을 수행합니다.

from django.conf.marget 가져오기 URL

from django.timport path, include

언급URL : https://stackoverflow.com/questions/70319606/importerror-cannot-import-name-url-from-django-conf-urls-after-upgrading-to

반응형