在像芹菜这样的django应用程序中,你可以编写一个函数,把它放到一个文件中(职能部门)在特定文件夹(myFunc)中。现在,您可以在django中创建一个对象,并引用调度程序要运行的函数。你知道吗
我不想写一个新的芹菜,我想知道用什么技术来实现这样的行为:运行一个由字符串/或CharField引用的函数。你知道吗
简短示例
文件夹结构:
myApp
---myFunc
-----func.py
-models.py
职能部门
def test():
print "foo"
型号.py
class RunAFunction(models.Model):
function = models.CharField(max_length=100)
Python管理.py外壳
> from myApp.models import RunAFunction
> func = RunAFunction(function="test()")
> func.save()
现在我想用我的RunAFunction()
类运行myFunc.func.test()
。
请不要告诉我需要使用eval()
;)
第一步是只通过名称来标识函数,所以使用“test”而不是“test()”。然后您应该能够使用getattr()之类的工具在全局命名空间或其他模块中查找它。一旦在变量中有了函数,就可以打开paren并调用它。你知道吗
拆分最后一个} 和^{} 获取对象:
.
上的字符串以获取模块和函数名,然后使用^{因此,如果
string = 'myApp.myFunc.test'
,那么上面的代码将其拆分为'modulename = 'myApp.myFunc'
和funcname = 'test'
,然后对结果调用importlib.import_module('myApp.myFunc')
和getattr(module, 'test')
,给出对函数的引用,然后可以调用该函数。你知道吗相关问题 更多 >
编程相关推荐