Приложения еще не загружены во время официального обучения Django - PullRequest
0 голосов
/ 15 января 2020

У меня проблема с настройками Django при выполнении официального Django учебного пособия . Консоль PyDev возвращает ошибку Apps aren't loaded yet, когда я запускаю режим отладки (F11) для файла models.py. Это очень простой проект, в котором я изменил только название проекта на «капитал», а имя приложения - «marketdata».

Обходные пути, предложенные в этом похожем вопросе, не решают мою проблему. Django 1.7 ошибка обновления: AppRegistryNotReady: приложения еще не загружены

Как возможно, что официальный учебник возвращает такую ​​ошибку с файлами basics settings.py и models.py? что я делаю не так?

models.py

from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

settings.py

INSTALLED_APPS = [
    'marketsdata.apps.MarketsdataConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

apps.py

from django.apps import AppConfig


class MarketsdataConfig(AppConfig):
    name = 'marketsdata'

urls.py

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

urlpatterns = [
    path('marketsdata/', include('marketsdata.urls')),
    path('admin/', admin.site.urls),
]

Выход дебагера:

pydev debugger: starting (pid: 23504)
Traceback (most recent call last):
  File "/home/abc/.eclipse/360744294_linux_gtk_x86_64/plugins/org.python.pydev.core_7.5.0.202001101138/pysrc/pydevd.py", line 3129, in <module>
    main()
  File "/home/abc/.eclipse/360744294_linux_gtk_x86_64/plugins/org.python.pydev.core_7.5.0.202001101138/pysrc/pydevd.py", line 3122, in main
    globals = debugger.run(setup['file'], None, None, is_module)
  File "/home/abc/.eclipse/360744294_linux_gtk_x86_64/plugins/org.python.pydev.core_7.5.0.202001101138/pysrc/pydevd.py", line 2195, in run
    return self._exec(is_module, entry_point_fn, module_name, file, globals, locals)
  File "/home/abc/.eclipse/360744294_linux_gtk_x86_64/plugins/org.python.pydev.core_7.5.0.202001101138/pysrc/pydevd.py", line 2202, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "/home/abc/.eclipse/360744294_linux_gtk_x86_64/plugins/org.python.pydev.core_7.5.0.202001101138/pysrc/_pydev_imps/_pydev_execfile.py", line 25, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/home/abc/python/capital/marketsdata/models.py", line 3, in <module>
    class Question(models.Model):
  File "/home/abc/.local/lib/python3.6/site-packages/django/db/models/base.py", line 107, in __new__
    app_config = apps.get_containing_app_config(module)
  File "/home/abc/.local/lib/python3.6/site-packages/django/apps/registry.py", line 252, in get_containing_app_config
    self.check_apps_ready()
  File "/home/abc/.local/lib/python3.6/site-packages/django/apps/registry.py", line 135, in check_apps_ready
    raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

1 Ответ

1 голос
/ 16 января 2020

Чтобы PyDev запустил проект django, вы должны щелкнуть правой кнопкой мыши по проекту и выполнить:

Run as > PyDev: Django

Под капотом будет выполнен запуск, который вызовет python manage.py runserver (вы также можете создать собственный запуск, который делает это, PyDev просто делает это немного проще).

И если вам нужна оболочка при работе с Django, вам нужно щелкнуть правой кнопкой мыши по проекту и выберите Django > Shell with Django environment (это даст вам оболочку django, но с поддержкой завершения кода из PyDev).

Обратите внимание, что код не будет автоматически добавлен в эту оболочку ... если вы измените код, который вы необходимо перезапустить оболочку или вручную reload модуль, который вы хотите (но, учитывая, что django имеет много магов c, перезагрузка может быть затруднена).

Примечание: вы можете захотеть взгляните на http://www.pydev.org/manual_adv_django.html для более подробной информации о том, как разработать Django в PyDev.

...