Я користувач Django створюю проект під назвою testdj
, а також в ньому я створив додаток з назвою TestModel
, дивіться моє дерево:
aircraftdeMacBook-Pro:TestPython ldl$ tree testdj/
testdj/
├── db.sqlite3
├── manage.py
├── templates
│ ├── base.html
│ ├── ext-1.html
│ ├── hello.html
│ └── index.html
└── testdj
├── TestModel
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── __init__.py
├── __init__.pyc
├── helloworld.py
├── settings.py
├── settings.pyc
├── urls.py
├── urls.pyc
├── view.py
├── view.pyc
├── wsgi.py
└── wsgi.pyc
Але коли я cd
до testdj/
каталог, я хочу запустити сервер wsgi:
$ python manage.py runserver
Я отримую помилку нижче:
Unhandled exception in thread started by <function wrapper at 0x10b80ede8>
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/utils/autoreload.py", line 227, in wrapper
fn(*args, **kwargs)
File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/core/management/commands/runserver.py", line 117, in inner_run
autoreload.raise_last_exception()
File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/utils/autoreload.py", line 250, in raise_last_exception
six.reraise(*_exception)
File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/utils/autoreload.py", line 227, in wrapper
fn(*args, **kwargs)
File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/apps/config.py", line 94, in create
module = import_module(entry)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named TestModel
Він говорить ImportError: No module named TestModel
в цьому.
В testdj/testdj/settins.py
, Я додав TestModel як APP:
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"TestModel",
]
Відповіді:
1 для відповіді № 1Брат брато, чому ти не дотримуєшся жодного підручника? ти заплутався
папка програми та основна папка testdj будуть там, де у вас є manage.py
,
на цьому етапі ви вставили тестову модель в папку testdj, куди settings.py
є,
тож вийміть його та поставте на місце Manag.py всю папку,
потім біжи
python manage.py runserver
0 для відповіді № 2
Це (https://stackoverflow.com/a/44673465/6563567) буде працювати, але перемістити додаток неправильнодо рівня settings.py. Ви просто повинні сказати django, де знайти програми. Оскільки ваші програми не знаходяться на рівні Manag.py, ваші встановлені програми повинні виглядати так:
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"testdj.TestModel",
]
Далі ви можете додати "testdj" у встановлені додаткиякщо ви хочете додати файл views.py на рівні налаштувань. Пам’ятайте, що ваш додаток є пакетом python, і кожен файл всередині програми є модулем python, і саме тому django використовує їх.