Python, Python 3.x 및 Django에서 발생하는 "ImportError: No module named 'django.core.urlresolvers'" 오류 해결
Python, Python 3.x 및 Django에서 발생하는 "ImportError: No module named 'django.core.urlresolvers'" 오류 해결
개요
오류 발생 원인
이 오류는 다음과 같은 이유로 발생할 수 있습니다.
- Django 버전: Django 2.0 이상 버전을 사용하는 경우
django.core.urlresolvers
모듈이 더 이상 존재하지 않습니다. - 코드 호환성: Django 1.9 이전 버전용으로 작성된 코드를 Django 2.0 이상 버전에서 실행하려고 하는 경우 코드에서
django.core.urlresolvers
모듈을 사용하려고 할 수 있습니다. - 잘못된 import 문: 코드에서
django.core.urlresolvers
모듈을 잘못된 이름으로 import하려고 할 수 있습니다.
해결 방법
이 오류를 해결하려면 다음 단계를 따르세요.
- Django 버전 확인: 사용 중인 Django 버전을 확인합니다. Django 2.0 이상 버전을 사용하는 경우 다음 단계를 수행해야 합니다.
- 코드 업데이트: Django 2.0 이상 버전에서 사용하도록 코드를 업데이트해야 합니다.
django.core.urlresolvers
대신django.urls
모듈을 사용해야 합니다.
코드 업데이트 방법
다음은 django.core.urlresolvers
대신 django.urls
모듈을 사용하도록 코드를 업데이트하는 방법의 예입니다.
URL 패턴 가져오기
# Django 1.9 이전 버전
from django.core.urlresolvers import get_urlconf
urlconf = get_urlconf()
# Django 2.0 이상 버전
from django.urls import conf
urlconf = conf.urls
URL 이름으로 URL 확인
# Django 1.9 이전 버전
from django.core.urlresolvers import reverse
url = reverse('my_view')
# Django 2.0 이상 버전
from django.urls import reverse
url = reverse('my_view')
URL 패턴 매칭
# Django 1.9 이전 버전
from django.core.urlresolvers import resolve
match = resolve(request.path_info)
# Django 2.0 이상 버전
from django.urls import resolve
match = resolve(request.path_info)
추가 정보
예제 코드
# Django 1.9 이전 버전
from django.core.urlresolvers import get_urlconf
urlconf = get_urlconf()
# views.py에 정의된 URL 패턴
urlpatterns = [
path('my_view/', views.my_view, name='my_view'),
]
# Django 2.0 이상 버전
from django.urls import conf
urlconf = conf.urls
# views.py에 정의된 URL 패턴
urlpatterns = [
path('my_view/', views.my_view, name='my_view'),
]
# Django 1.9 이전 버전
from django.core.urlresolvers import reverse
url = reverse('my_view')
# Django 2.0 이상 버전
from django.urls import reverse
url = reverse('my_view')
# Django 1.9 이전 버전
from django.core.urlresolvers import resolve
request = HttpRequest()
request.path_info = '/my_view/'
match = resolve(request.path_info)
# Django 2.0 이상 버전
from django.urls import resolve
request = HttpRequest()
request.path_info = '/my_view/'
match = resolve(request.path_info)
views.py
def my_view(request):
# ...
django.core.urlresolvers
대체 방법
django.urls 모듈 사용
django.urls
모듈은 Django 2.0에서 도입된 새로운 URL 처리 모듈입니다. 이 모듈은 다음과 같은 기능을 제공합니다.
- URL 패턴 정의
# Django 2.0 이상 버전
from django.urls import conf
urlconf = conf.urls
# Django 2.0 이상 버전
from django.urls import reverse
url = reverse('my_view')
# Django 2.0 이상 버전
from django.urls import resolve
request = HttpRequest()
request.path_info = '/my_view/'
match = resolve(request.path_info)
직접 URL 문자열 생성
URL 이름을 알고 있는 경우 직접 URL 문자열을 생성할 수 있습니다. 예를 들어, 다음 코드는 my_view
뷰에 대한 URL 문자열을 생성합니다.
url = '/my_view/'
path() 함수 사용
path()
함수를 사용하여 URL 패턴을 정의할 수 있습니다. 예를 들어, 다음 코드는 /my_view/
URL에 대한 패턴을 정의합니다.
from django.urls import path
urlpatterns = [
path('my_view/', views.my_view, name='my_view'),
]
python python-3.x django