2009-03-04 25 views
4

特定のURLでアクティブ化されていないスクリプトを作成したいと思いますが、管理インターフェースからリンクをクリックしてください。 どうすればいいですか? ありがとう!django-管理者からスクリプトを実行

+0

は、何かをするために、サーバーが発生することはありません。明確にするために質問を編集してください:このアクションを一部のユーザーに再現したいのですか?をクリックした後、同じページにとどまりたいですか? – muhuk

答えて

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 %} 

これ(はず)は、管理インターフェイスの上部にあるリンクを置きます。

それからちょうどユーザーがこのようなスーパーユーザであることを確認するために、通常のDjangoのビューを作成し、ビューのチェックの一番上にあなたのurls.pyに

という名前のパターンを使用してURLを追加します。

if not request.user.is_staff: 
    return Http404 

これは、権限のないユーザーがこのビューにアクセスするのを防ぎます。

次に、上記のコードの後のビューで、スクリプトを実行してください。

は、たとえば、Pythonのsubprocessモジュールであることを実行します。それは、ハイパーリンク(すなわち)でない限り、ブラウザ側のリンクをクリックする

from subprocess import call 
retcode = call(["/full/path/myscript.py", "arg1"]) 
関連する問題