Import views vs from . import views
Я новичок в Python и Django, у меня есть каталог приложений calc и внутри него есть два файла:
views.pyurls.py
В urls.py, если я набираю import views, сервер выдает ошибку, однако если я набираю from . import views, все работает нормально. Кто-нибудь может объяснить почему? Я думал, что поскольку два файла py находятся в одном и том же непосредственно, оператор import должен соответствовать views.py
Ответ очень прост. По умолчанию, если вы import everything, вы импортируете его из стандартной библиотеки pythonish. Если вы расширяете его до from everything.something import anything, он проверяет путь, начинающийся с модулей app everything. Если это не удается, он также пытается искать global.
В вашем случае он ищет в той же папке (начиная с .) модуль views, который не является глобальным пакетом, поэтому его нельзя получить простым import views.
Поскольку ваши файлы находятся в вашем модуле calc, вы должны использовать import calc.views, а не import views.
Вы можете ссылаться на некоторую view функцию some_func как calc.views.some_func.
Или вы можете сделать import calc.views as views, и тогда вы можете ссылаться на функцию как views.some_func, так же, как при использовании from . import views.
Причина, по которой вы должны включить префикс calc в import calc.views, заключается в том, что это считается " абсолютным импортом", и calc сам не находится в вашем $PYTHONPATH - находится его родительский каталог.
В любом случае, вам, вероятно, лучше придерживаться from . import views (который называется " относительный импорт").