如何在Django项目中正确共享应用之间的代码
我在我的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!”。