django-从管理员运行脚本

raw*_*wnd 4 python django

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

Van*_*ale 11

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

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

{% extends "admin/base.html" %}
{% block nav-global %}
  <p><a href="{% url your-named-url %}">Do Something</a></p>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

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

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

然后只需创建一个正常的django视图,并在视图的顶部检查以确保用户是超级用户,如下所示:

if not request.user.is_staff:
    return Http404
Run Code Online (Sandbox Code Playgroud)

这将防止未经授权的人访问此视图.

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

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

from subprocess import call
retcode = call(["/full/path/myscript.py", "arg1"])
Run Code Online (Sandbox Code Playgroud)