2017-06-05 8 views
1

djangoの管理者パネルに簡単なスクリプトを追加しようとしています。adminパネルのdjangoのホームサイトにCSS/jsファイルを追加

class ArticleAdmin(admin.ModelAdmin): 
     class Media: 
      js = ("my_code.js",) 

admin.site.register(Article, ArticleAdmin) 

my_code.jsは(STATICFILES_DIRSに住んでいた)私は「条」管理者のパネル内のリンクを(開いたときに実行されますので、これは次のようになります。私はこれを行うときには動作しますが、docからこの例を、以下のい例url:localhost:8000/admin/news/article/

しかし、adminのパネル(これはURL:localhost:8000/admin/)にログインした直後と同じように、ホームサイトで実行したいと思います。どこにclass Mediaを挿入する必要がありますか?

+1

これを実現するには、管理用テンプレートをカスタマイズすることを検討する必要があります。 –

答えて

1

カスタムJavaScriptをすべての管理ページに表示しようとしていますか?次に、最も良いことは、overrideのデフォルトの管理用テンプレートです。

あなたのdjangoインストールを見て、django/contrib/admin/templates/admin/base.htmlを見つけて、プロジェクトフォルダのtemplates/adminにコピーしてください。次に、単にhtmlに以下を追加します。

<script scr="my_code.js" type="text/javascript"></script> 

次に、jsはすべての管理ページで利用できるようになります。

+0

、うまくいった! – Tom

+0

助けてくれてうれしいです – e4c5

+0

ここで説明したように、コピーするのではなく管理者のテンプレートを上書きすることでこれを達成できるかどうか疑問に思っています。https://docs.djangoproject.com/en /1.11/ref/contrib/admin/#overriding-vs-replacing-an-admin-template私が理解できる限り、それは – Tom

0

hereで説明されているように置き換えるのではなく、上書きしている別の方法が見つかりました。

{% extends "admin/base.html" %} 
{% load static %} 
{% block footer %} 
    {{ block.super }} 
    <script type="text/javascript" src="{% static 'my_code.js' %}"></script> 
{% endblock %} 

これはlocalhost:8000/admin/の中フッター後にスクリプトを挿入します:あなたはtemplates/adminにファイルbase.htmlを配置する場合

ここでは「無効にする」the base.htmlです。しかし、私は.superhereを説明しています)を使用しているので、フッタータグの後にスクリプトを追加します。

関連する問題