Django共享库/类

14 投票
4 回答
10197 浏览
提问于 2025-04-16 08:43

我刚开始学习Django,想请教一下该把我的共享库放在哪里比较好。我打算创建一些类,希望在项目中的所有应用里都能使用。请问把它们放在哪里最合适呢?

比如说抽象模型。

谢谢!

4 个回答

1

如果你打算在其他项目中也使用这个共享库,可以用 distutils 来制作一个安装程序。不过,如果这个库只是为了你当前项目里的应用,那你可以参考AntonioP的回答。

记住,当你运行你的django项目时,项目的根目录(也就是包含manage.py的文件夹)总是在你的PYTHON_PATH里。所以你可以创建一个叫 depsdependenciesextra 或者你喜欢的任何名字的文件夹,把你的共享库放在里面。

15

我从《Two Scoops of Django》这本书中学到的一个重要点是,你可以把共享的代码放在自己创建的一个Django应用里,叫做core

使用core这个应用的方法和你从其他应用中调用类的方式是差不多的。

想了解更多,可以去看看这本书的第28章,标题是:“那些随机工具呢?”

18

我们通常会这样设置我们的项目:

/site/
    __init__.py
    manage.py
    settings.py
    urls.py
    /apps/
        __init__.py
        /appA/
            __init__.py
        /appB/
            __init__.py
    /lib/
        __init__.py
        /django-lib/
            __init__.py
        /shared-lib/
            __init__.py

只要确保你的网站目录在你的 Python 路径上就可以了:

import sys
sys.path.append('/path/to/site/')

另外,要确保在 site、apps 和 lib 目录下都有一个名为 init.py 的文件,这样它们才能被当作模块来使用,像这样用点号导入(比如 import site.lib.shared-lib)。

补充:

关于你的 Python 路径的问题,其实和你的 'manage.py' 或类似文件的位置有关。如果这个文件在 /site/ 目录下(和 apps、lib 在一起),那么 PYTHONPATH 应该就没问题。

你需要确保每个目录里都有一个空文件,名字叫 __init__.py。这个文件告诉 Python 把这个目录当作一个模块。看看上面的 ASCII 艺术,更新得更好了。

撰写回答