开发者社区> 问答> 正文

如何从Django BASE_DIR外部导入模型

我正在开发一个Django应用程序,我想在其中将一些类/函数从generator.py导入到views.py中,以处理用户提交的输入。我的文件夹结构如下所示:

project/

models/

  __init__.py

  generator.py

web/

  django/

     __init__.py

     settings.py

     urls.py

     wsgi.py

  django_app

     __init__.py

     views.py

     etc.

在views.py内部,我有

from ...models.generator import Generator

当我尝试运行服务器时,得到的是:

ValueError: attempted relative import beyond top-level package

我已经看到了很多答案,但是大多数答案都是关于操纵sys.path或更改PYTHONPATH的。我不确定怎么做以及在哪里做,因为我是Django的新手。

谁能确切告诉我要执行哪些命令才能完成导入?

展开
收起
游客6qcs5bpxssri2 2019-09-27 09:51:34 1871 0
1 条回答
写回答
取消 提交回答
  • python的导入基于sys.path并且不能在顶级目录之外。就是说,如果在BASE_DIR路径顶部附加路径,则sys.path可以导入。但这是一个棘手的方法。

    def import_function():

    import sys
    
    sys.path.append(os.path.dirname(BASE_DIR))
    
    module = __import__('models.generator')  # import code
    
    sys.path.pop()
    
    return module
    

    g_module = import_function()

    g_module.Generator

    2019-09-28 18:30:18
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载