我想了解Django中是否有正确且可接受的处理导入方式?
我使用以下模式>
# import views from Django app called xxx to urls.py in the same app
from . import views
我在许多教程和博客中使用的内容>
# import views from Django app called xxx to urls.py in the same app
from xxx import views
同样我使用>
# import YYY and XXX from xxx.models to xxx.serializers.py
from .models import YYY, XXX
我在Django-Rest-Framework教程中看到的例子是>
# import YYY and XXX from xxx.models to xxx.serializers.py
from xxx.models import XXX, YYY
按照教程中显示的方式执行导入在我的Django应用程序中不起作用。难道我做错了什么?我从Django文档中选择了我的方式。 我正在使用Django 1.10和Python3.5
答案 0 :(得分:1)
假设你有一个看起来像这样的Django项目:2个名为app_1
和app_2
的应用
mysite/
manage.py
app_1/
__init__.py
models.py
views.py
app_2/
__init__.py
models.py
views.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
现在要运行此应用程序,您将使用此命令。
mysite> python manage.py runserver
这里是从mysite
父文件夹/目录运行命令。
现在在python app_1
视图代码中说你是导入app_2
模型(如果你的代码结构合理,你不应该这样做)。但要进行导入,您必须完成完整的命名空间。
示例:
from app_2.models import XXX
另一方面,如果您想从同一个应用app_1
中导入模型,您可以使用
from .models import YYY
但如果使用mysite> python manage.py runserver
命令运行程序,则应该能够使用完整的命名空间路径导入相同的模块。
from app_1.models import YYY
注意:编码的好方法总是明确的。因此你会注意到这些是更常用的处方。
# import views from Django app called xxx to urls.py in the same app
from xxx import views
# import YYY and XXX from xxx.models to xxx.serializers.py
from xxx.models import XXX, YYY