このドキュメントの Django のバージョンにはセキュリティ上の脆弱性があるため、すでにサポートが終了されています。新しいバージョンにアップグレードしてください!最新の Django のバージョンのドキュメントはこちら

Django v1.0 documentation

databrowse

revision-up-to:8961 (1.0)

Django の Admin サイトはモデルに対するイントロスペクションによって、動的に 管理サイトを構築しています。 databrowse も同様に、モデル定義からリッチなブ ラウジングウェブサイトを生成します。

Note

databrowse は 非常に 新しいアプリケーションで、まだ活発な開発下にあ ります。次の Django のリリースまでには相当変更が加えられるでしょう。

そのことさえ念頭におけば、 databrowse 自体はとても簡単に利用でき、コー ドを書く必要もありません。ですから、ごくごくわずかに時間を費してコード を書くだけで試せます。

databrowse の使い方

  1. Django に databrowse のデフォルトのテンプレートを教えます。やり方は いくつかあります:

    • 'django.contrib.databrowse'INSTALLED_APPS に追加し ます。この方法は、 TEMPLATE_LOADERS 設定に app_directories テンプレートローダが入っている場合に使えます (デフォ ルトでは入っています) 。詳しくは テンプレートローダのドキュメント を参照して ください。
    • あるいは、 django/contrib/databrowse/templates ディレクトリへ の完全なパスを調べ、 TEMPLATE_DIRS 設定に追加してください。
  2. databrowse サイトにいくつかモデルを登録します:

    from django.contrib import databrowse
    from myapp.models import SomeModel, SomeOtherModel
    
    databrowse.site.register(SomeModel)
    databrowse.site.register(SomeOtherModel)
    

    モデルの インスタンスではなくクラス を登録してください。

    このコードは、何らかのタイミングで実行される場所であればどこに書いて もかまいません。例えば URLconf (urls.py) に書くのがよいでしょう。

  3. URLconf を変更して、mod:~django.contrib.databrowse モジュールを import します:

    from django.contrib import databrowse
    

    そして、以下の一行を追加します:

    (r'^databrowse/(.*)', databrowse.site.root),
    

    プレフィクスはなんでも構いません -- databrowse/ でも db/ でも なんでも好きなプレフィクスを使ってください。

  4. Django サーバを起動して /databrowse/ をブラウザで表示してください。

ユーザにログインを要求する

たった数行追加するだけで、ビューへのアクセスをログインしているユーザに限定 できます。まず、以下の import 行を URLconf に追加します:

from django.contrib.auth.decorators import login_required

次に、 URLconf を変更して、 databrowse.site.root() ビューを django.contrib.auth.decorators.login_required() で修飾 (decorate) し ます:

(r'^databrowse/(.*)', login_required(databrowse.site.root)),

ユーザ認証のドキュメント にあるような、ログインを サポートするための URLconf を設定していないのなら、 以下のようなマッピングも追加しておきます:

(r'^accounts/login/$', 'django.contrib.auth.views.login'),

最後のステップは、 django.contrib.auth.views.login() で必要なログイン フォームの作成です。 ユーザ認証のドキュメント に は、テンプレートの詳細版と簡略版の両方を記載しています。