求助:Django项目出现ModuleNotFoundError: No module named 'rest_framework.router'
Django项目报错ModuleNotFoundError: No module named 'rest_framework.router'的解决
我是开发领域的新手,在Django项目中遇到错误:ModuleNotFoundError: No module named 'rest_framework.router'。我已尝试将django、djangorestframework等所有相关包更新至最新版本,查阅官方文档也未找到解决思路,该问题已困扰我超过一天。以下是报错堆栈、我的urls.py配置及INSTALLED_APPS配置:
报错堆栈
Traceback (most recent call last): File "/home/henadzi/project/onlineshop/manage.py", line 22, in <module> main() File "/home/henadzi/project/onlineshop/manage.py", line 18, in main execute_from_command_line(sys.argv) File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line utility.execute() File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/core/management/__init__.py", line 440, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/core/management/base.py", line 402, in run_from_argv self.execute(*args, **cmd_options) File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/core/management/base.py", line 443, in execute self.check() File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/core/management/base.py", line 475, in check all_issues = checks.run_checks( File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/core/checks/registry.py", line 88, in run_checks new_errors = check(app_configs=app_configs, databases=databases) File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/core/checks/urls.py", line 14, in check_url_config return check_resolver(resolver) File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/core/checks/urls.py", line 24, in check_resolver return check_method() File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/urls/resolvers.py", line 494, in check for pattern in self.url_patterns: File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/utils/functional.py", line 57, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/urls/resolvers.py", line 715, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/utils/functional.py", line 57, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/urls/resolvers.py", line 708, in urlconf_module return import_module(self.urlconf_name) File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/home/henadzi/project/onlineshop/server/urls.py", line 7, in <module> path('', include('product.urls')), File "/home/henadzi/project/onlineshop/venv/lib/python3.10/site-packages/django/urls/conf.py", line 38, in include urlconf_module = import_module(urlconf_module) File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/home/henadzi/project/onlineshop/product/urls.py", line 4, in <module> from rest_framework.router import DefaultRouter ModuleNotFoundError: No module named 'rest_framework.router'
我的urls.py配置
from django.urls import include, path from product.views import ProductViewSet from rest_framework import routers from rest_framework.router import DefaultRouter router = DefaultRouter() router.register('', ProductViewSet, basename="ProductViewSet") urlpatterns = [ path('', include(router.urls)), ]
我的INSTALLED_APPS配置
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'product', ]
解决办法
问题出在导入路径的拼写错误:DefaultRouter所在的模块是rest_framework.routers(复数形式),不是rest_framework.router。你只需要修正导入语句即可,其他配置没有问题。
修正后的urls.py代码:
from django.urls import include, path from product.views import ProductViewSet from rest_framework.routers import DefaultRouter # 改为复数routers router = DefaultRouter() router.register('', ProductViewSet, basename="ProductViewSet") urlpatterns = [ path('', include(router.urls)), ]
内容的提问来源于stack exchange,提问作者aivos921
相关产品推荐
相关产品推荐

