簡単なAdminサイトコマンド
22175 ワード
adminの基礎構成
1管理インタフェースのローカライズ
settings.pyで言語とタイムゾーンを設定する
2スーパー管理者の作成
管理者を作成するコマンドは、ユーザー名、メールボックス、パスワードをプロンプトで入力します.
ブラウザを開き、アドレスバーに次のようなアドレスを入力して車に戻ります.
3モデルクラスの登録
バックグラウンド管理にログインすると、作成したアプリケーションで定義されたモデルクラスがデフォルトではなく、自分のアプリケーションでadminが必要です.pyファイルに登録すると、バックグラウンド管理で表示され、削除変更操作が行えます.
booktest/adminを開きます.pyファイル、次のコードを作成します:(ここでは自分のファイル名のパスで、自分で定義したモデルクラスをインポートします)
ブラウザでページをリフレッシュすると、モデルクラスBookInfoとHeroInfoの管理が表示されます.
4.Admin管理クラスの定義と使用
管理クラスを使用するには、次の2つの方法があります.
パラメータの登録
デコレーション
Djangoが提供するAdminサイトの表示効果は、ModelAdminクラスをカスタマイズすることで制御できます.
管理クラスを定義するにはadminから継承する必要がある.ModelAdminクラス、以下のように
1.ページサイズ
各ページに表示されるデータの数、デフォルトでは各ページに5つのデータが表示されます.プロパティは次のとおりです.
2「操作オプション」の場所
上部に表示されるプロパティは、Trueが上部に表示されるように設定され、Falseが上部に表示されないように設定され、デフォルトはTrueです.
下部に表示されるプロパティは、Trueが下部に表示されるように設定され、Falseが下部に表示されないように設定され、デフォルトはFalseです.
3リストの列
属性は次のとおりです.
4メソッドを列として使用
カラムは、モデルフィールドでもモデルメソッドでもあり、メソッドに戻り値が必要です.
short_を設定するdescriptionプロパティ.adminサイトに表示されるカラム名を設定できます.
5関連オブジェクト
関連オブジェクトのプロパティまたはメソッドに直接アクセスできません.モデルクラスでメソッドをカプセル化し、関連オブジェクトのメンバーにアクセスできます.
6右側のバーフィルタ
プロパティは次のとおりです.フィールドのみが受信され、対応するフィールドの値がリストされ、高速フィルタリングに使用されます.一般的には、重複する値を持つフィールドで使用されます.
7検索ボックス
プロパティは、指定したフィールドの値を検索するために使用され、ファジイクエリをサポートします.リストのタイプ.これらのフィールドで検索されることを示します.
編集ページの表示の調整
1.フィールドの表示
属性は次のとおりです.
2.グループ表示
属性は次のとおりです.
3.関連オブジェクト
1対多の関係では、一端の編集ページで多端のオブジェクトを編集できます.多端のオブジェクトを埋め込む方法には、表、ブロックの2種類があります.
タイプInlineModelAdmin:モデルの編集ページに関連モデルの編集を埋め込むことを示します.サブクラスTabularInline:表形式で埋め込まれます.サブクラスStackedInline:ブロックとして埋め込まれます.
サイト情報の調整
Adminサイトの名前情報もカスタマイズできます.
画像をアップロード
Djangoにはファイルシステムのサポートがあり、Adminサイトで簡単に画像をアップロードできます.
Adminサイトで画像を保存するには、Pythonの画像操作パッケージをインストールする必要があります
以前に設定したstatic_のように、アップロードしたファイルを静的ファイルディレクトリに保存できます.filesディレクトリにsettings.pyファイルに次のアップロード保存ディレクトリ情報を追加
ケースコード:
admin.py
models.py
1管理インタフェースのローカライズ
settings.pyで言語とタイムゾーンを設定する
LANGUAGE_CODE = 'zh-hans' #
TIME_ZONE = 'Asia/Shanghai' #
2スーパー管理者の作成
管理者を作成するコマンドは、ユーザー名、メールボックス、パスワードをプロンプトで入力します.
python manage.py createsuperuser
ブラウザを開き、アドレスバーに次のようなアドレスを入力して車に戻ります.
http://127.0.0.1:8000/admin/
3モデルクラスの登録
バックグラウンド管理にログインすると、作成したアプリケーションで定義されたモデルクラスがデフォルトではなく、自分のアプリケーションでadminが必要です.pyファイルに登録すると、バックグラウンド管理で表示され、削除変更操作が行えます.
booktest/adminを開きます.pyファイル、次のコードを作成します:(ここでは自分のファイル名のパスで、自分で定義したモデルクラスをインポートします)
from django.contrib import admin
from booktest.models import BookInfo,HeroInfo
ブラウザでページをリフレッシュすると、モデルクラスBookInfoとHeroInfoの管理が表示されます.
4.Admin管理クラスの定義と使用
管理クラスを使用するには、次の2つの方法があります.
パラメータの登録
admin.site.register(BookInfo,BookInfoAdmin)
デコレーション
@admin.register(BookInfo)
class HeroInfoAdmin(admin.ModelAdmin):
pass
Djangoが提供するAdminサイトの表示効果は、ModelAdminクラスをカスタマイズすることで制御できます.
管理クラスを定義するにはadminから継承する必要がある.ModelAdminクラス、以下のように
from django.contrib import admin
class BookInfoAdmin(admin.ModelAdmin):
pass
@admin.register(HeroInfo)
class HeroInfoAdmin(admin.ModelAdmin):
pass
admin.site.register(BookInfo,BookInfoAdmin)
1.ページサイズ
各ページに表示されるデータの数、デフォルトでは各ページに5つのデータが表示されます.プロパティは次のとおりです.
list_per_page=5
2「操作オプション」の場所
上部に表示されるプロパティは、Trueが上部に表示されるように設定され、Falseが上部に表示されないように設定され、デフォルトはTrueです.
actions_on_top=True
下部に表示されるプロパティは、Trueが下部に表示されるように設定され、Falseが下部に表示されないように設定され、デフォルトはFalseです.
actions_on_bottom=False
3リストの列
属性は次のとおりです.
list_display=[ 1, 2,...]
4メソッドを列として使用
カラムは、モデルフィールドでもモデルメソッドでもあり、メソッドに戻り値が必要です.
short_を設定するdescriptionプロパティ.adminサイトに表示されるカラム名を設定できます.
class BookInfo(models.Model):
def pub_date(self):
return self.bpub_date.strftime('%Y %m %d ')
pub_date.short_description = ' '
class BookInfoAdmin(admin.ModelAdmin):
list_display = ['id','atitle','pub_date']
5関連オブジェクト
関連オブジェクトのプロパティまたはメソッドに直接アクセスできません.モデルクラスでメソッドをカプセル化し、関連オブジェクトのメンバーにアクセスできます.
class HeroInfo(models.Model):
def read(self):
return self.hbook.bread
read.short_description = ' '
class HeroInfoAdmin(admin.ModelAdmin):
list_display = ['id', 'hname', 'hbook', 'read']
6右側のバーフィルタ
プロパティは次のとおりです.フィールドのみが受信され、対応するフィールドの値がリストされ、高速フィルタリングに使用されます.一般的には、重複する値を持つフィールドで使用されます.
list_filter=[]
7検索ボックス
プロパティは、指定したフィールドの値を検索するために使用され、ファジイクエリをサポートします.リストのタイプ.これらのフィールドで検索されることを示します.
search_fields=[]
編集ページの表示の調整
1.フィールドの表示
属性は次のとおりです.
fields=[]
2.グループ表示
属性は次のとおりです.
fieldset=(
(' 1 ',{'fields':(' 1',' 2')}),
(' 2 ',{'fields':(' 3',' 4')}),
)
3.関連オブジェクト
1対多の関係では、一端の編集ページで多端のオブジェクトを編集できます.多端のオブジェクトを埋め込む方法には、表、ブロックの2種類があります.
タイプInlineModelAdmin:モデルの編集ページに関連モデルの編集を埋め込むことを示します.サブクラスTabularInline:表形式で埋め込まれます.サブクラスStackedInline:ブロックとして埋め込まれます.
class HeroInfoStackInline(admin.StackedInline):
model = HeroInfo #
extra = 1 #
class BookInfoAdmin(admin.ModelAdmin):
inlines = [HeroInfoStackInline]
サイト情報の調整
Adminサイトの名前情報もカスタマイズできます.
admin.site.site_header
admin.site.site_title
admin.site.index_title
画像をアップロード
Djangoにはファイルシステムのサポートがあり、Adminサイトで簡単に画像をアップロードできます.
Adminサイトで画像を保存するには、Pythonの画像操作パッケージをインストールする必要があります
pip install Pillow
以前に設定したstatic_のように、アップロードしたファイルを静的ファイルディレクトリに保存できます.filesディレクトリにsettings.pyファイルに次のアップロード保存ディレクトリ情報を追加
MEDIA_ROOT=os.path.join(BASE_DIR," ")
ケースコード:
admin.py
from django.contrib import admin
# Register your models here.
# from django.contrib import admin
from .models import BookInfo,HeroInfo
admin.site.site_header=" "#
admin.site.site_title=" "
admin.site.index_title=" "
class HeroInfoTabularInline(admin.StackedInline):
model = HeroInfo
extra = 1
class BookInfoAdmin(admin.ModelAdmin):
list_display = ['id', 'btitle', 'pub_date']
# fields=['btitle','bpub_date']
fieldsets = (
(' ', {'fields': ['btitle', 'bpub_date']}),
(' ', {
'fields': ['bread', 'bcomment','image',],
'classes': ('collapse',) #
})
)
inlines=[HeroInfoTabularInline]
@admin.register(HeroInfo)
class HeroInfoAdmin(admin.ModelAdmin):
list_per_page = 5 #
actions_on_top = True
actions_on_bottom = True
list_display = ['id', 'hname','hbook','read']
list_filter=['hbook','hgender']
search_fields = ['hname']
admin.site.register(BookInfo,BookInfoAdmin)
models.py
from django.db import models
from django.contrib import admin
# Create your models here.
class BookInfo(models.Model):
btitle = models.CharField(max_length=20, verbose_name=' ')
bpub_date = models.DateField(verbose_name=' ')
bread = models.IntegerField(default=0, verbose_name=' ')
bcomment = models.IntegerField(default=0, verbose_name=' ')
is_delete = models.BooleanField(default=False, verbose_name=' ')
image = models.ImageField(upload_to='booktest', verbose_name=' ', null=True)
class Meta:
db_table = 'tb_books' #
verbose_name = ' ' # admin
verbose_name_plural = verbose_name #
def __str__(self):
""" """
return self.btitle
def pub_date(self):
return self.bpub_date.strftime('%Y %m %d ')
pub_date.short_description = ' '
pub_date.admin_order_field = 'bpub_date'
class HeroInfo(models.Model):
GENDER_CHOICES = (
(0, 'male'),
(1, 'female')
)
hname = models.CharField(max_length=20, verbose_name=' ')
hgender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name=' ')
hcomment = models.CharField(max_length=200, null=True, verbose_name=' ')
hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name=' ') #
is_delete = models.BooleanField(default=False, verbose_name=' ')
# image = models.ImageField(upload_to='booktest', verbose_name=' ', null=True)
class Meta:
db_table = 'tb_heros'
verbose_name = ' '
verbose_name_plural = verbose_name
def __str__(self):
return self.hname
def read (self):
return self.hbook.bread
read.short_description=' '