django-从管理员运行脚本

时间:2009-03-04 00:17:13

标签: python django

我想编写一个不是由某个URL激活的脚本,而是通过单击管理界面中的链接。 我该怎么做呢? 谢谢!

1 个答案:

答案 0 :(得分:10)

但链接必须转到URL,所以我想你的意思是你想要一个只在管理界面中可见的视图功能,并且该视图功能运行一个脚本?

如果是这样,请使用以下简单的方法覆盖admin/base_site.html模板:

{% extends "admin/base.html" %}
{% block nav-global %}
  <p><a href="{% url your-named-url %}">Do Something</a></p>
{% endblock %}

这(应该)将链接放在管理界面的顶部。

将您的带有命名模式的网址添加到您的urls.py

然后只需制作一个普通的django视图,并在视图的顶部检查以确保用户是超级用户,如下所示:

if not request.user.is_staff:
    return Http404

这样可以防止未经授权的人访问此视图。

接下来,在上面代码之后的视图中,只需运行脚本。

使用Python的子进程模块执行此操作,例如:

from subprocess import call
retcode = call(["/full/path/myscript.py", "arg1"])