管理サイトの FAQ

revision-up-to:17812 (1.4)

ログインできません。正しいユーザ名とパスワードを入力したのに、再度ログインページが表示されます。エラーメッセージも出ません。

Django の発行するクッキーのドメインと、ブラウザに格納されたドメインが一致し ていないために、ログインクッキーが正しく設定されていない場合に起きる症状で す。以下の二つの対策を試してみて下さい:

  • 設定ファイルの SESSION_COOKIE_DOMAIN に正しいドメインを設定してく ださい。例えば、Django のサイトにアクセスするときに、ブラウザで “http://www.example.com/admin/” と入力しているのなら、 “myproject.settings” には SESSION_COOKIE_DOMAIN = 'www.example.com' と設定せねばなりません。
  • ブラウザの中には (Firefox かな?) ドットの入っていないドメインからのクッ キーを受け取りたがらないものがあります。管理サイトを “localhost” など のようなドットを含まないドメインで立てているのなら、 “localhost.localdomain” や “127.0.0.1” を試してください。また、 SESSION_COOKIE_DOMAIN もドメイン名に合わせて変更してください。

ログインできません。正しいユーザ名とパスワードを入力したところ、「正しいユーザ名とパスワードを入力してください」というエラーメッセージつきでログインページを表示します。

ユーザネームとパスワードが本当に正しいのなら、ユーザアカウントが is_active で、かつ is_staffTrue であるか確かめて下さい。 管理サイトにアクセスできるのは、 is_activeis_staff が共に True のユーザだけです。

キャッシュミドルウェアに管理サイトをキャッシュさせたくないのですが?

CACHE_MIDDLEWARE_ANONYMOUS_ONLY 設定を True にしてください。 詳しくは キャッシュのドキュメント を参照してください。

管理サイト上でオブジェクトを編集するときに、あるフィールドに、そのオブジェクトを最後に編集したユーザの情報を自動的に入れる方法はないですか?

ModelAdmin クラスの用意しているカスタマイズ用 のフックを使えば、オブジェクトを保存するときに、リクエストから取り出した情報 に基づいてフィールドの値を変更できます。具体的には、 save_model() フックをカスタマイズして、 オブジェクトのフィールド値にリクエストから取り出した現在のユーザを反映させま す。 ModelAdmin メソッドのドキュメント にサン プルがあります。

管理サイト上でオブジェクトを編集するときに、オブジェクトを最初に作成したユーザだけが編集できるよう制限するにはどうすればよいですか?

ModelAdmin の用意しているフックには、オブ ジェクトを管理サイト上に表示するかどうかと編集可能かどうかを制御できるもの があります。 queryset() および has_change_permission() フックをカスタマイズすれば、上の質問の答えと同様、リクエストから取り出した 現在のユーザの情報に基づいて、オブジェクトの表示や編集を制御できます。

開発サーバでは管理サイトの CSS や画像がうまく表示されるのに、 mod_wsgi を使うと表示されません。

「mod_wsgi で Django を使う」というドキュメントの 管理サイト用のファイルを公開する方法 を参照してください。

“list_filter” に ManyToManyField を入れたのに、管理サイトがフィルタを表示しません。

Django が ManyToManyField に対してフィルタを表示するのは、リレーション 先のオブジェクトが複数のときだけです。

例えば、 list_filtersites が入っており、データベースにたった一 つしかサイトが登録されていなければ、 “Site” フィルタは表示されません。この 状況では、サイトによるフィルタは無意味だからです。

管理サイトの機能をカスタマイズするにはどうすればよいですか?

方法はいくつかあります。Django が自動生成する add/change フォームを利用して 楽をしたければ、モデルの class Adminjs パラメタを使ってページに 任意の JavaScript モジュールを貼り付けてください。パラメタには、 JavaScript モジュールの URL をリストにして指定します。管理画面は、指定した JavaScript を <script> タグでフォームと一緒に出力します。

単に自動生成されるフォームをいじる以上の柔軟さが必要な場合には、管理サイト 用のカスタムビューを書いて下さい。管理サイトはそれ自体 Django で作られてい るので、認証システムやパーミッションのチェックなどを行うビューを自作できま す。

管理サイトのルック & フィールをカスタマイズしたいのなら、次の項目を読んで下 さい。

管理サイトのデザインが気に入りません!どうすれば変更できますか?

私達は好きなんですが、そうは思わないのなら、 CSS スタイルシートや画像ファイ ルを編集して、管理サイトのプレゼンテーションを変更できます。サイトはセマ ンティックな HTML を使って書かれているので、やりたい変更は全て CSS スタイル シートの編集で実現できます。てほどきに 管理サイトの CSS ガイド を用意してあります。

管理サイトはどのブラウザでサポートされていますか?

管理サイトは IE6 以外 (サポート対象外) のすべての YUI’s A-grade ブラウザで、 完全な機能を提供しており、問題なく表示されます。

角丸表示をサポートしていないなど、各々のブラウザで多少の違いはあるかもし れません。これらは、許容範囲であると考えられています。