django 表單和admin站點

2021-08-20 03:48:13 字數 3032 閱讀 6110

'''

1.表單

django內建表單的內容, 使用forms模組的form類

在單獨的forms.py檔案中建立表單類和建立模型類的方法很像, 然後檢視類用到表單,例項物件就可以

form類中內建一些方法,提供我們使用

比如:form = bookform(request.post) post上傳的請求資料,通過自定義的表單類拿出

form.is_valid() 驗證表單資料的合法性

form.cleaned_data 獲取驗證後的表單資料

快速建立表單:

表單中的資料與模型類對應,通過指定是哪個模型類

class bookform(forms.modelform): # 必須繼承modelform

class meta:

model = bookinfo    # model 指明從屬於哪個模型類

fields = ('btitle', 'bpub_date')    # fields 指明向表單中新增模型類的哪個字段

''''''

2.admin

建立管理員 python manage.py createsuperuser

admin站點是管理資料庫模型的

需要註冊進去 admin.py :   admin.site.register(bookinfo)

預設的功能不能滿足,需要定製化,自定義admin效果, 必須繼承admin中modeladmin

class bookinfoadmin(admin.modeladmin):

# 具體新增的功能

使用自定義的模型管理器(註冊進去)

方法1:放到第二個引數 admin.site.register(bookinfo,bookinfoadmin)

方法2:@admin.register(bookinfo)

class bookinfoadmin(admin.modeladmin):

''''''

3.admin定製化 -> 列表頁

(1)每頁中顯示多少條資料: list_per_page = num

(2)操作選項 的位置 : actions_on_top=true

actions_on_bottom=false

(3)列表中的列 : list_display=['id','btitle',...]

(4)將函式方法作為列 : 設定short_description屬性

注意class bookinfo(models.model): 定義的方法是在模型類中,然後short_description把方法可以當做欄位來用

def pub_date(self):

return self.bpub_date.strftime('%y年%m月%d日') 改變時間的顯示格式,定義乙個方法

pub_date.short_description = '發布日期'  函式方法.short_description # 設定方法為字段在admin中顯示的標題

admin中:    

list_display = ['id','btitle','pub_date']  # 這樣就可以把方法當做字段寫進去

(5)方法列是不能排序的,如果需要排序需要為方法指定排序依據。

admin_order_field=模型類欄位  注意也是在模型類中

(6)關聯物件:無法直接訪問關聯物件的屬性或方法,可以在模型類中封裝方法,訪問關聯物件的成員。

def read(self):

return self.hbook.bread

read.short_description = '圖書閱讀量'   

(7)右側欄過濾器 

list_filter = ['hbook', 'hgender']

(8)搜尋框

search_fields = ['hname']

''''''

4.admin定製化 -> 詳情編輯頁

(1) 顯示字段 : fields = ['btitle', 'bpub_date'] 詳情頁只顯示這兩個字段

(2)分組顯示 : fieldsets = (

('基本', ),

('高階', )

)(3)關聯物件 (嵌入)

在一對多的關係中,可以在一端的編輯頁面中編輯多端的物件,嵌入多端物件的方式包括**、塊兩種。

子類tabularinline:以**的形式嵌入。

子類stackedinline:以塊的形式嵌入。

塊: 自定義 class heroinfostackinline(admin.stackedinline):

model = heroinfo  # 要編輯的物件

在 bookinfoadmin(admin.modeladmin) 中 嵌入 inlines = [heroinfostackinline]

**: 自定義 class heroinfotabularinline(admin.tabularinline):  就是繼承的不同

model = heroinfo

extra = 1

嵌入 inlines = [heroinfotabularinline]

站點資訊:

admin.site.site_header 設定**頁頭

admin.site.site_title 設定頁面標題

admin.site.index_title 設定首頁標語

比如:admin.site.site_header = '傳智書城'

admin.site.site_title = '傳智書城mis'

admin.site.index_title = '歡迎使用傳智書城mis'

上傳:pip install pillow

配置:media_root=os.path.join(base_dir,"static_files/media")

新增字段:

image = models.imagefield(upload_to='booktest', verbose_name='', null=true)

upload_to 選項指明該字段的儲存在media_root目錄中的哪個子目錄

django新增admin管理

admin 也是乙個 跟我們建立的 沒什麼兩樣,只不過它是系統所有的。如果要使用的話,按下面的步驟就可以了。1.在settings.py 的元組裡新增一行 django.contrib.admin 每次新增新應用後,都要執行一下 syncdb 建立資料表。但是我們還要用 admin 來管理其他應用 ...

Django學習筆記《admin》

主要內容有 自定義表單的域 polls admin.py from django.contrib import admin from models import question class questionadmin admin.modeladmin fields pub date questio...

Django框架admin後台管理和使用者端靜態檔案

目錄 二 使用者上傳的靜態檔案的展示 三 防盜煉 django自帶admin元件,也可以用第三方的xadmin元件 有很多bug 1.去應用下的admin.py中註冊你想要管理的模型類。2.要想登陸到後台管理,必須是超級使用者,需要管理員使用者root許可權。所以需要用createsuperuser...