Django导入的正确方式是什么?

3

我想了解在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文档中找到方法的。 我正在使用Python3.5的Django 1.10版本。


请分享您的项目树结构。只需安装tree模块并从您的项目目录运行“tree”命令,然后将输出添加到您的问题中。 - Vikash Singh
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接