Django NoModuleFoundError возникает только при добавлении действительного пути к urls.py из папки моего проекта

Я создал проект Django в соответствии с отличным постом Виктора Фрейтаса о готовом к производству Django boilerplate здесь https://simpleisbetterthancomplex.com/tutorial/2021/06/27/how-to-start-a-production-ready-django-project.html

У меня ушел день на рефакторинг всего моего проекта с 7 приложениями, чтобы вписаться в этот шаблон. Все было хорошо и все работало, пока я не начал разрабатывать пути urls и шаблоны.

По какой-то причине при добавлении пути к url в основной файл urls.py в основной папке проекта Django выдает мне ошибку NoModuleFoundError, говорящую 'ModuleNotFoundError: Нет модуля с именем 'categories' . Categories - это название моего приложения, и оно правильно установлено в конфигурационном файле base.py. Код ниже:

# SIGP3A/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # path('categories/', include('categories.urls')), # <-- THIS LINE RIGHT HERE
]

Если я раскомментирую указанную выше строку, я получаю сообщение об ошибке. Если я закомментирую ее, она проходит проверку Django.

Ниже приведены фрагменты кода, которые, на мой взгляд, имеют отношение к вопросу:

code structure up to setting local

# SIGP3A/Comps/categories/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.categories, name='categories'),
]

Ниже приведены мои установленные приложения, в которые включены категории. Примечание Comps находится ВНУТРИ основной папки проекта и именно там я храню все свои приложения.

base.py config file showing installed apps

Я использую конфигурацию local.py, которая импортирует из base.py. Как я уже сказал, все работает ДО того, как я начинаю добавлять url пути.

Я закомментировал все, что связано с панелью инструментов отладки django, просто чтобы отфильтровать несколько вещей во время отладки.

Ниже показано, как категории регистрируются в apps.py:

from django.apps import AppConfig


class CategoriesConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'SIGP3A.Comps.categories'

Я провел утро, исследуя это с помощью проб и ошибок, только чтобы найти другие ошибки, которые привели меня еще дальше от решения. Чувствую, что уже не знаю, что делать. Я хочу следовать этому шаблону, который имеет для меня полный смысл, но я застрял, думая, что мне следует вернуться к моему более простому, хотя и не готовому к производству подходу.

Вот весь трассировочный откат:

(.venv) PS D:\HDD_Code\SIGP3A_chest\SIGP3A> py manage.py check
Traceback (most recent call last):
  File "D:\HDD_Code\SIGP3A_chest\SIGP3A\manage.py", line 22, in <module>
    main()
  File "D:\HDD_Code\SIGP3A_chest\SIGP3A\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\core\management\__init__.py", line 440, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\core\management\base.py", line 414, in run_from_argv
    self.execute(*args, **cmd_options)
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\core\management\base.py", line 460, in execute   
    output = self.handle(*args, **options)
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\core\management\commands\check.py", line 76, in handle
    self.check(
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\core\management\base.py", line 487, in check     
    all_issues = checks.run_checks(
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\core\checks\registry.py", line 88, in run_checks 
    new_errors = check(app_configs=app_configs, databases=databases)
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\core\checks\urls.py", line 14, in check_url_config
    return check_resolver(resolver)
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\core\checks\urls.py", line 24, in check_resolver 
    return check_method()
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\urls\resolvers.py", line 480, in check
    for pattern in self.url_patterns:
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\utils\functional.py", line 49, in __get__        
    res = instance.__dict__[self.name] = self.func(instance)
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\urls\resolvers.py", line 696, in url_patterns    
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\utils\functional.py", line 49, in __get__        
    res = instance.__dict__[self.name] = self.func(instance)
  File "D:\HDD_Code\SIGP3A_chest\.venv\lib\site-packages\django\urls\resolvers.py", line 689, in urlconf_module  
    return import_module(self.urlconf_name)
  File "C:\Users\fsoar\AppData\Local\Programs\Python\Python310\lib\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
ModuleNotFoundError: No module named 'categories'

Вот весь список требований в моей виртуальной среде. Для этой работы я решил не создавать разделенные среды, так как на данный момент она является экспериментальной.

asgiref==3.5.2
asttokens==2.0.5
backcall==0.2.0
black==22.6.0
certifi==2022.6.15
click==8.1.3
colorama==0.4.5
coverage==6.4.2
decorator==5.1.1
distlib==0.3.5
dj-database-url==1.0.0
Django==4.0.6
django-debug-toolbar==3.5.0
executing==0.9.1
factory-boy==3.2.1
Faker==13.15.1
filelock==3.7.1
flake8==5.0.3
gunicorn==20.1.0
ipython==8.4.0
isort==5.10.1
jedi==0.18.1
matplotlib-inline==0.1.3
mccabe==0.7.0
mypy-extensions==0.4.3
packaging==21.3
parso==0.8.3
pathspec==0.9.0
pickleshare==0.7.5
platformdirs==2.5.2
pluggy==1.0.0
prompt-toolkit==3.0.30
psycopg2==2.9.3
pure-eval==0.2.2
py==1.11.0
pycodestyle==2.9.0
pyflakes==2.5.0
Pygments==2.12.0
pyparsing==3.0.9
python-dateutil==2.8.2
python-decouple==3.6
pytz==2022.1
sentry-sdk==1.9.0
six==1.16.0
sqlparse==0.4.2
stack-data==0.3.0
toml==0.10.2
tomli==2.0.1
tox==3.25.1
traitlets==5.3.0
tzdata==2022.1
urllib3==1.26.11
virtualenv==20.16.2
wcwidth==0.2.5

Я думаю, что мне нужно что-то куда-то импортировать, но я не знаю, что именно, учитывая, что категории уже зарегистрированы.

Вам нужно использовать фактическое имя приложения для Django, чтобы знать, где находится включаемый файл urls.py:

# your installed app name
INSTALLED_APPS = [
    ...
    'SIGP3A.Comps.categories'
]
# your urls.py file
path('categories/', include('SIGP3A.Comps.categories.urls'))
Вернуться на верх