python - 做 Django 导入的正确方法是什么?

标签 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

最佳答案

假设您有一个如下所示的 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 View 中,代码表示您正在导入 app_2 模型(如果您的代码结构良好,则不必这样做)。但是要进行导入,您必须执行完整的命名空间。

例子:

从 app_2.models 导入 XXX

另一方面,如果您想从同一个应用 app_1 中导入模型,您可以使用

从 .models 导入 YYY

但如果您使用 mysite> python manage.py runserver 命令运行该程序,您应该也能够导入具有完整命名空间路径的相同模块。

从 app_1.models 导入 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

关于python - 做 Django 导入的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41485744/

相关文章:

python - 通过 celery 向 django-channels 发送消息

python - 如何在pkg_resources中实现resource_filename?

python - numba 和 @guvectorize 的“签名中的错误 token ”

python - 检查 argparse 参数集,或使用默认值,或覆盖

python - Pandas 首次发货后 3 天内累计发货的单位数

django url 参数包含带有命名空间的 url 之前

javascript - 在您自己的网站上共享带有缩略图的链接

python - 尝试在 Python2.6 virtualenv 中安装 PIL 时出现 gcc 错误

python - Django - 以 latin1 格式发布数据,解码为 utf-8

python - 在 Django 中使用物化 View 或替代方案