我是OOP和其他一切新手。我想为一个django泛型类(DetailView)创建一个方法,该方法在调用视图时调用subprocess。这是我目前的工作,它工作正常:
class ThingsObject(SingleObjectMixin):
template_name = 'thingsdb/stuff.html'
queryset = Things.objects.all()
class ThingsView(ThingsObject, generic.DetailView):
pass
所以我想定义一个方法,用脚本调用包含请求对象的参数的子进程,如下所示:
def foo(self):
bar= "".join(["python", "bar.py", str(self.object)])
subprocess.call(bar, shell=True)
我希望在调用视图时运行该方法。响应应该是该脚本返回的内容,我想将其作为上下文添加到模板中。
我意识到答案对你的普通程序员来说可能是非常基本的,但我一直在玩一些解决方案,但是没有得到任何结果。因此我问你会怎么做?
我的想法也许是我应该覆盖调度方法以包括运行脚本并返回额外的上下文。但说实话,我不知道我在课堂上的观点是做什么的。
提前致谢!
答案 0 :(得分:0)
如果要将脚本的结果添加到上下文中,则应从get_context_data
调用它。结果是dict,因此您可以在那里添加数据。
请注意,subprocess.call
的结果只是脚本的返回代码,而不是脚本输出的内容。有许多其他方法可以获得实际的输出,但正如我在评论中提到的那样,似乎没有一个很好的理由可以完全依赖于脚本:因为它是Python,只需导入它并在其中调用它正常的方式。