我想编写一个不是由某个URL激活的脚本,而是通过单击管理界面中的链接。 我该怎么做呢? 谢谢!
答案 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"])