进行Django导入的正确方法是什么?

时间:2017-01-05 12:57:45

标签: python django

我想了解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

1 个答案:

答案 0 :(得分:1)

假设你有一个看起来像这样的Django项目:2个名为app_1app_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