1

管理者では、管理者メディアの URLに任意の JavaScript からアクセスできるようにしたいと考えています。
すでにリクエストコンテキストに含まれています。
しかし、含まれているjavascriptからアクセスできるようにするために、

<script type="text/javascript">
  window.__admin_media_prefix__ = "{{ ADMIN_MEDIA_URL }}";
</script>

そのようなものを基本テンプレートに入れる必要がありますか、またはそれを行うためのよりクリーンな方法はありますか?

4

2 に答える 2

2

メディア (静的) ファイルは、django によって解釈されません。実稼働サイトでは、おそらくフロントエンド Web サーバーによって提供されるため、Python コードはそのファイルにアクセスすることさえできない場合があります。サーバーサイドインクルード(SSI)のようなものを使用して、構成ファイルを何らかの方法で解析することにより、選択したメディアファイルに可変コンテンツを埋め込みます。

より良いアイデアは、すべてのサイトに同じ管理メディア プレフィックス スキームを使用し、選択した Web サーバーに柔軟なサイトごとの構成ファイルを用意し、管理メディア ファイルが既知の場所から提供されるようにすることです。

location ^~ /media/ {
    root        /.../django-$django_ver/contrib/admin/;
}
于 2011-12-27T23:10:20.917 に答える
1

私はやや「邪悪な」解決策を提供することができます.Django 1.4はすべてに静的なものdjango.contrib.adminを使用しているためです. django.contrib.staticfiles管理者の Javascript がmissing-admin-media-prefix見つからない場合は使用しているため、たとえば Apache でリダイレクトを行うことができます。

RewriteRule ^/missing-admin-media-prefix/(.*)$ /static/admin/$1 [L,R=301]

(もちろん が にSTATIC_URL設定されている場合)/static

この方法は、Admin を頻繁にハッキングし、グローバル Javascript 変数宣言でテンプレートを乱雑にしたくない場合に特に便利です。

于 2012-12-06T13:17:21.997 に答える