【发布时间】:2010-10-11 03:53:52
【问题描述】:
我想编写一个不是由某个 URL 激活的脚本,而是通过单击管理界面中的链接来激活的。 我该怎么做呢? 谢谢!
【问题讨论】:
-
单击浏览器端的链接不会导致服务器执行任何操作,除非它是超链接(即)。请编辑您的问题以澄清:您只是想将此操作限制为部分用户还是您想在点击后留在同一页面?
我想编写一个不是由某个 URL 激活的脚本,而是通过单击管理界面中的链接来激活的。 我该怎么做呢? 谢谢!
【问题讨论】:
但是链接必须指向 URL,所以我认为您的意思是您想要一个仅在管理界面中可见的视图功能,并且该视图功能运行脚本?
如果是这样,用这个简单的东西覆盖 admin/base_site.html 模板:
{% extends "admin/base.html" %}
{% block nav-global %}
<p><a href="{% url your-named-url %}">Do Something</a></p>
{% endblock %}
这(应该)将链接放在管理界面的顶部。
将带有命名模式的 url 添加到 urls.py 中
然后只需制作一个普通的 django 视图并在视图顶部检查以确保用户是这样的超级用户:
if not request.user.is_staff:
return Http404
这将防止未经授权的人访问此视图。
接下来,在您查看上述代码之后,只需运行脚本即可。
使用 Python 的 subprocess 模块执行此操作,例如:
from subprocess import call
retcode = call(["/full/path/myscript.py", "arg1"])
【讨论】: