如何在Django项目中正确共享应用之间的代码

1 投票
3 回答
3150 浏览
提问于 2025-04-17 02:51

我在我的Django项目里有几个应用程序。我想在所有应用中重复使用一些功能。于是我创建了一个新的应用,并在里面添加了一个自定义的functions.py文件。然后我尝试了以下代码:

from myNewApp import *
from myNewApp import functions

结果我遇到了一个错误:NameError: global name xxx is undefined(名字错误:全局名称xxx未定义)。

我是不是漏掉了什么重要的东西?

你会建议我怎么解决在多个应用中重复使用代码的问题呢?

谢谢,

3 个回答

0

你可以在项目的根目录下创建一个文件夹,在里面写你需要的函数,然后在需要的应用或文件中导入这些函数。或者,你也可以使用一个叫做 app/utils.py 的文件。不过我对这种方法有点担心,因为可能有其他应用想要使用你在 app/utils.py 中写的函数或对象,这样它们就会直接引用这个文件,比如:

from app.utils import my_desired_function

希望这对你有帮助 :)

3

确保你的应用程序上面的文件夹在你的PYTHONPATH里面。

2

想象一下,你有一个叫commons的项目,这里存放着你想分享的所有代码。然后你想在另一个叫foo的项目中使用commons里的代码。假设你的文件夹结构是这样的:

/home/shared/commons.py
/home/tim/projects/foo.py

文件commons.py的内容是:

def say_hello():
    return "Hello World!"

如果你想在文件test.py中导入commons这个模块,可以在这个文件里写:

import sys
sys.path.append("/home/shared/")

import commons
print commons.say_hello()

这样就会打印出“Hello world!”。

撰写回答