4
我想編寫一個腳本,該腳本不是由某個URL激活的,而是通過點擊管理界面中的鏈接。 我該怎麼做? 謝謝!django-從管理員運行腳本
我想編寫一個腳本,該腳本不是由某個URL激活的,而是通過點擊管理界面中的鏈接。 我該怎麼做? 謝謝!django-從管理員運行腳本
但是一個鏈接必須轉到一個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的子模塊,例如:
from subprocess import call
retcode = call(["/full/path/myscript.py", "arg1"])
點擊瀏覽器端的鏈接不會導致服務器做任何事情,除非它是一個超鏈接(即)。請編輯您的問題以澄清:您是否想將此操作取消爲部分用戶使用,或者您希望在點擊後保留在同一頁面中? – muhuk 2009-03-04 20:18:20