Django INSTALLED_APPS не может правильно получить приложения с подчеркиванием - почему? - PullRequest
0 голосов
/ 22 декабря 2019

У меня есть проект Django, там есть два приложения, скажем, сыр и mouse_and_cat . Добавляя оба к INSTALLED_APPS, я сначала написал там

INSTALLED_APPS = [
    'cheese.apps.CheeseConfig',
    'mouse_and_cat.apps.Mouse_and_catConfig',
]

, но это привело только к ошибке, что " mouse_and_cat.app не является пакетом ". Я попытался изменить его на 'mouse_and_cat.apps.MouseandcatConfig' , но это не помогло - почему-то я думал, что так и будет. Я искал в Google и сохранил первую «линию сыра», но изменил вторую только на 'mouse_and_cat' - и теперь это работает. Но ... как обстоят дела с подчеркиванием, почему Django ведет себя так странно, когда приложение называется так? Есть что-то, чего я здесь не хватает? Теперь я знаю, что подчеркивание не является предпочтительным шаблоном именования, и поэтому я буду избегать его, но это все еще беспокоит меня, потому что я считаю, что эта ошибка была в какой-то степени скорее моей ошибкой, чем Джанго.

Ответы [ 2 ]

1 голос
/ 22 декабря 2019

Он ничего не делает с подчеркиванием , это должен быть пунктирный путь к конфигурации приложения class. Этот класс конфигурации обычно находится в файле /app_name/apps.py, здесь имя_приложения: mouse_and_cat.

Если вы хотите, чтобы он работал, вы можете поместитьимя приложения (mouse_and_cat) или пунктирный путь к классу в списке INSTALLED_APPS.

0 голосов
/ 23 декабря 2019

Из документации Django: https://docs.djangoproject.com/en/3.0/ref/applications/#configuring-applications

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

При mouse_and_cat/apps.py:

from django.apps import AppConfig

class Mouse_and_Cat_Config(AppConfig):
    name = 'mouse_and_cat' # app_name to be configured

При settings.py:

INSTALLED_APPS = [
    ...
    'mouse_and_cat.apps.Mouse_and_Cat_Config',
    ...
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...