Django 1.0中国語ドキュメント---第2部自動生成管理ツールの指導
9402 ワード
最初のDjangoアプリケーション、第2部を作成します
前回の指導から始め、Django自動管理インタフェースの部分に力を入れて、このページの投票アプリケーションを続けました.
コンセプトはあなたのスタッフとお客様のためにウェブサイトの削除管理を開発するのは単調で退屈で創意的な仕事であるため、Djangoは完全に自動的にモデル管理インタフェースを自動的に作成する機能を実現しました.Djangoはニューススタジオ環境で誕生し、コンテンツ配信者とウェブサイトを明確に分割し、ウェブサイト管理者がシステムを通じてニュース記事、時間、スポーツ試合などを配信し、これらのコンテンツがウェブサイトに表示され、djangoは接続口を統一的に管理してウェブサイトのコンテンツを編集することを解決した.ウェブサイト管理は管理者に提供され、ウェブサイトへのアクセスユーザーは必要ありません.
管理システムのアクティブ化
Django管理システムのデフォルトはアクティブではありません.アクティブ化をインストールするには、次の3つのことをする必要があります.
from django.conf.urls.defaults import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Example:
# (r'^mysite/', include('mysite.foo.urls')),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
(r'^admin/(.*)', admin.site.root),
)
太字の数行は注釈を取り消す必要がある部分です.
サービスの開始
サービスレビュー管理インタフェースを起動します.
指導第1部で述べたように実行する
python manage.py runserver
ブラウザでアドレスhttp://127.0.0.1:8000/admin/にアクセスすると、次のログインページが表示されます.
管理システムへのアクセス
今登録すると、アカウントは前編で作成したアカウントで、次のページが表示されます.
他のいくつかのコンテンツ、ユーザー、ユーザーグループ、Webサイトが表示されます.これらの機能はDjangoのデフォルトで提供されています.
管理への投票の適用
投票アプリケーションが管理インタフェースにないことがわかります.
投票pollオブジェクトを管理インタフェースに登録し、エンジニアリングpollsディレクトリにadminを作成する必要があります.pyファイル、以下に編集
from mysite.polls.models import Poll
from django.contrib import admin
admin.site.register(Poll)
通常、ファイルが変更されるとサービスは自動的に再ロードされますが、新しいファイルサービスを作成すると自動的に再ロードされません.
自由な管理機能の表示
今pollを登録して、Djangoは彼を管理インタフェースに表示することを知っています.
「Polls.」をクリックpollsの変更リストページに入ります.ここにはデータベース内のすべてのpollsが表示されています.変更を選択することができます.「What's up」レコードは私たちが前に作成したものです.
「What's up」をクリックして変更を記録し、編集ページに進みます
注意事項
下のページでいくつかのオプションを指定します.
「Today」と「Now」をクリックして「Date published」を変更し、「Save and continue editing.」をクリックします.ページ右上の「History」をクリックすると、管理システムが自動的に記録した時間変更者のユーザー名を含む変更ログのリストが表示されます.
カスタム管理インタフェースフォーム
わずか数分でadminを呼び出すと、これらの機能を実現するためにコードを書いていないことに驚くでしょう.site.register(Poll)、djangoはオブジェクトを編集し、管理インタフェースに表示する方法を推測することができます.通常、管理インタフェースの表示と作業を制御する必要があります.オブジェクトを管理インタフェースに登録すると、いくつかのオプションを設定することができます.
カスタムフォームフィールドで作業する方法を見て、adminを次のコードで置き換えましょう.site.register(Poll):
class PollAdmin(admin.ModelAdmin):
fields = ['pub_date', 'question']
admin.site.register(Poll, PollAdmin)
このようにして、管理オブジェクトモデルを作成し、2番目のパラメータでadminに渡す.site.register()は、このオブジェクトで管理オプションを変更できます.この修正によりフォームに「Publication date」が「que stion」の上に表示されます.もちろん2つのフィールドしかありません.この機能は深くありません.1つのフォームに多くのフィールドがあれば、ソートが重要で実用的です.フィールド数の多いフォームで、複数のフィールドグループを分割できます.
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question']}),
('Date information', {'fields': ['pub_date']}),
]
admin.site.register(Poll, PollAdmin)
各フィールドグループにclassesを任意に指定できます.djangoは「collapse」classに特別なフィールドグループを表示します.フォームが長い場合、この機能は重要です.
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
リレーショナルオブジェクトを追加するには、polls管理インタフェースがありますが、pollには複数のオプションがあり、管理インタフェースにはオプション編集が表示されていません.まずChoiceを登録するには2つの方法があります
from mysite.polls.models import Choice
admin.site.register(Choice)
このフォームにchoiceが表示されます.「Poll」フィールドのselectboxにはデータベースのすべてのPollsが含まれています.djangoは外部キーの説明方法を知っています.select boxを使用します.ここでは現在pollオプションが1つしかありません.pollの横にある「Add Another」にも注意してください.各オブジェクトは外部キーで自由に関連付けることができます.「Add Another」をクリックすると、ポップアップページにPOLLを追加したフォームが表示されます.POLLを追加すると、DJANGOは自動的にADD CHOICEフォームPOLLドロップダウンに追加します.しかし、実際にはこのように投票オプションを追加するのは非効率的な方法であり、より良い一括追加オプションの方法がある.レジスター()を削除し、
class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline]
admin.site.register(Poll, PollAdmin)
を修正します.これにより、DJANGOはPOLL編集ページにデフォルトで3つのオプションフォームを提供していることがわかります.以下のように一度に3つ追加することができますが、まだ少し不足しています.このようにステーション画面を比較して、ChoiceInlineを修正します.
class ChoiceInline(admin.TabularInline):
#...
StackedInlineの代わりにTabularInlineでレイアウトを表示するカスタム管理インタフェース修正リスト
今pollの管理のインタフェースは見てすでに悪くなくて、私の扉は引き延ばして下でリストのページを修正して、今以下の様子です:デフォルトの下でDJANGOはオブジェクトのstr()を表示して、しかし時には1つ1つ必要なフィールドを表示するのはとても役に立ちます、私達はlist_を使いますdisplay管理オプション
class PollAdmin(admin.ModelAdmin):
# ...
list_display = ('question', 'pub_date')
はいwasをpublished_todayも含めて class PollAdmin(admin.ModelAdmin):
# ...
list_display = ('question', 'pub_date', 'was_published_today')
リストの上の列のタイトルをクリックして対応する列に対してwasを除いてソートすることができますpublished_today、彼はデータベースフィールドではないので、デフォルトではwas_published_todayタイトルは下線がスペースになった文字列に置き換えられます.もちろん、 def was_published_today(self):
return self.pub_date.date() == datetime.date.today()
was_published_today.short_description = 'Published today?'
をカスタマイズしてPOLL修正リストを改善し、フィルタを追加することもできます. list_filter = ['pub_date']
右側にナビゲーションバーDJANGOが追加され、デフォルトでは「Any date」「Today」「Past 7 days」「This month」「This year」のいくつかのオプションが与えられています.これはいいですね.検索機能 search_fields = ['question']
を追加すると、上部に検索ボックスが追加され、他のフィールドクエリーも追加できます.ここではlikeクエリーを使用しているので、合理的に使用します.カスタム管理インタフェースの外観は確かに、各管理ページのタイトルが「Django administration」であるのは適切ではありません.これは簡単に変更でき、プロファイルmysite/settingsを開きます.py、TEMPLATE_DIRSの設定を見つけて、TEMPLATE_DIRSの中でいくつかの経路を配置して、DJANGOがロードする時、これらの経路の中でテンプレートを探します.デフォルトのTEMPLATE_DIRSは空で、独自のテンプレートパスを追加します.次のようになります. TEMPLATE_DIRS = (
"/home/my_username/mytemplates", # Change this to your own directory.
)
今あなたのDJANGOパスからコピーします
admin/base_site.htmlあなたのエンジニアリングテンプレートディレクトリに
/home/my_username/mytemplates/admin/base_site.html .
ファイルを変更してタイトルに置き換えます.
base_site.htmlは現在上書きされており、DJANGOはまずエンジニアリングテンプレートディレクトリにテンプレートページがあるかどうかを検索します.
カスタム管理ページのトップページ
やり方は上と似ている