pythondjango的功能有什么-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)義縣免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)python django的功能有什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

靜態(tài)文件

·將靜態(tài)文件放到一個(gè)單獨(dú)的目錄中,以方便管理

- 靜態(tài)文件可以放在項(xiàng)目根目錄下,也可以放在應(yīng)用的目錄下

- 由于有些靜態(tài)文件在項(xiàng)目中是通用的,所以推薦放在項(xiàng)目的根目錄下,方便管理

·在項(xiàng)目的setting文件中,通過(guò)STATICFILES_DIRS列表配置靜態(tài)文件的加載路徑

·在html頁(yè)面調(diào)用靜態(tài)文件時(shí),需要指定靜態(tài)文件所在的路徑

·為了安全和方便維護(hù),可以通過(guò)配置項(xiàng)達(dá)到隱藏真實(shí)靜態(tài)文件路徑的目的

- 使用static標(biāo)簽,根據(jù)配置項(xiàng)動(dòng)態(tài)生成靜態(tài)文件路徑(結(jié)合Nginx布署時(shí),會(huì)將所有的靜態(tài)文件都交給Nginx處理,而不用轉(zhuǎn)到Django部分,所以這項(xiàng)配置就無(wú)效了,這個(gè)功能有些雞肋!)

#反向解析加載靜態(tài)圖片路徑
{% load staticfiles %}    
{% static 'images/01.jpg'%}

中間件

·概念:Django中的中間件是一個(gè)輕量級(jí)、底層的插件系統(tǒng),可以介入Django的請(qǐng)求和響應(yīng)處理過(guò)程,修改Django的輸入或輸出;中間件的設(shè)計(jì)為開(kāi)發(fā)者提供了一種無(wú)侵入式的開(kāi)發(fā)方式,增強(qiáng)了Django框架的健壯性,其它的MVC框架也有這個(gè)功能,名稱為IoC。

·使用場(chǎng)景:當(dāng)某些操作在每次請(qǐng)求或響應(yīng)時(shí)都會(huì)執(zhí)行時(shí),可以寫在中間件中

·設(shè)計(jì)思想:面向切面編程/無(wú)侵害式編程

# 中間件方法(Django在中間件中預(yù)置了六個(gè)方法,這六個(gè)方法的區(qū)別在于不同的階段執(zhí)行,對(duì)輸入或輸出進(jìn)行干預(yù))
1.初始化:無(wú)需任何參數(shù),服務(wù)器響應(yīng)第一個(gè)請(qǐng)求的時(shí)候調(diào)用一次,用于確定是否啟用當(dāng)前中間件
def __init__():
    pass
2.處理請(qǐng)求前:在每個(gè)請(qǐng)求上調(diào)用,返回None或HttpResponse對(duì)象
def process_request(request):
    pass
3.處理視圖前:在每個(gè)請(qǐng)求上調(diào)用,返回None或HttpResponse對(duì)象
def process_view(request, view_func, view_args, view_kwarge):
    pass
4.處理模板相應(yīng)前:在每個(gè)請(qǐng)求上調(diào)用 ,返回實(shí)現(xiàn)了render方法的相應(yīng)對(duì)象
def process_temlate_pesponse(request, response):
    pass
5.處理響應(yīng)后:所有響應(yīng)返回瀏覽器之前被調(diào)用,在每個(gè)請(qǐng)求上調(diào)用,返回HttpResponse對(duì)象
def process_response(request, response):
    pass
6.異常處理:當(dāng)視圖拋出異常時(shí)調(diào)用,在每個(gè)請(qǐng)求上調(diào)用,返回一個(gè)HttpResponse對(duì)象
def process_exception(request, exception)
# 自定義中間件
- 中間件是一個(gè)獨(dú)立的python類,可以定義這六個(gè)方法中的一個(gè)或多個(gè)
- 在應(yīng)用中新建middleware.py文件,在文件中定義類TestMiddleware
- 配置自定義中間件:應(yīng)用.文件名.類名 == Book.middleware.TestMiddleware
#如果多個(gè)中間件中注冊(cè)了相同的方法,則先注冊(cè)的后執(zhí)行

站點(diǎn)管理

·內(nèi)容發(fā)布的部分由網(wǎng)站的管理員負(fù)責(zé),包括查看、添加、修改、刪除數(shù)據(jù)

·Django項(xiàng)目中默認(rèn)啟用Admin管理站點(diǎn):列表頁(yè)選項(xiàng), 編輯頁(yè)選項(xiàng), 重寫模板

#準(zhǔn)備工作
啟用mysql數(shù)據(jù)庫(kù)+定義AreaInfo模型類+創(chuàng)建管理員+注冊(cè)模型類
再 重寫模型__str__
# 控制站點(diǎn)管理頁(yè)的展示
- 類ModelAdmin可以控制模型在Admin界面中的展示方式,主要包括在列表頁(yè)的展示方式、添加修改頁(yè)的展示方式
- 注冊(cè)模型類前定義管理類AreaAdmin
class AreaAmin(admin.ModelAdmin):
    pass
- 管理類有兩種使用方式
1.注冊(cè)參數(shù)
admin.site.register(AreaInfo, AreaAdmin)
2.裝飾器
@admin.register(AreaInfo)
class AreaAmin(admin.ModelAdmin):
    pass

列表頁(yè)選項(xiàng)

·頁(yè)大小

#設(shè)置每頁(yè)展示的條數(shù),默認(rèn)每頁(yè)顯示100條
list_per_page = 100

·操作選項(xiàng)Action的位置:默認(rèn)在管理頁(yè)面的頂部有一個(gè),管理頁(yè)面底部沒(méi)有

# 在頭部增加一個(gè)
actions_on_top = True
# 在底部增加一個(gè)
actions_on_bottom = False

·列表中的列: 指定在模型列表中顯示哪些字段作為列

# 指定展示的字段
list_display = [字段1, 字段2, ...]
 # 定義模型方法作為列
def title(self):
      return self.name
# 指定方法作為列的排序依據(jù)
title.admin_order_field = 'name'

·模型方法為列:模型方法和模型字段都指定為列顯示在管理界面上

·列標(biāo)題:默認(rèn)為屬性或方法的名稱,可以通過(guò)屬性設(shè)置為其他名稱。設(shè)置方式

1.short_description 屬性設(shè)置
            -  方法名.short_description = '列標(biāo)題
2.verbose_name 屬性設(shè)置

右側(cè)欄過(guò)濾器:只能接收字段,會(huì)將對(duì)應(yīng)字段的值列出來(lái),用于快速過(guò)濾,一般用于有重復(fù)值的字段

list_filter = ['字段1', '字段2', ...]

搜索框:用于對(duì)指定字段的值進(jìn)行搜索,支持模糊查詢

search_fields = ['字段1', '字段2', ...]

編輯頁(yè)選項(xiàng)

·字段順序:根據(jù)列表順序指定編輯界面字段順序

fields = ['字段1', '字段2', ...]

·字段分組:字段分組fieldsets與字段順序fields二選一使用

fieldsets = (
        ('組1標(biāo)題', {'fields': ('字段1', '字段2')}),
        ('組2標(biāo)題', {'fields': ['字段3', '字段4']}),
 )

·關(guān)聯(lián)對(duì)象

在一對(duì)多的關(guān)系中,可以在一端的編輯頁(yè)面中編輯多端的對(duì)象
    - 嵌入多端對(duì)象的方式包括表格、塊兩種
類型InlineModelAdmin:表示在模型的編輯頁(yè)面嵌入關(guān)聯(lián)模型的編輯
    - 子類StackedInline:以塊的形式嵌入
    - 子類TabularInline:以表格的形式嵌入
在admin.py文件中,創(chuàng)建AreaStackedInline類,繼承自admin.StackedInline

重寫模板

·當(dāng)我們需要修改站點(diǎn)管理頁(yè)面的樣式時(shí),可以重寫站點(diǎn)的模板

在templates 目錄下創(chuàng)建 admin目錄
再在admin文件下創(chuàng)建base_site.html

上傳圖片

·兩種方式上傳圖片(上傳后,將圖片存儲(chǔ)在項(xiàng)目靜態(tài)文件中,然后將圖片的路徑存儲(chǔ)在數(shù)據(jù)庫(kù)表中)

    ·在站點(diǎn)管理頁(yè)面中上傳圖片

    ·自定義form表單中上傳圖片

# 保存在static目錄下,media表示多媒體文件目錄,圖片上傳后保存的路徑:static/media/Book
# 在settings中,配置圖片上傳后保存的目錄
MEIA_ROOT=os.path.join(BASE_DIR, 'static/media')
# 后臺(tái)站點(diǎn)上傳圖片
# 自定義表單上傳圖片
chunks() 保證數(shù)據(jù)安全

分頁(yè)

·Django提供了數(shù)據(jù)分頁(yè)類,定義在django.core.paginator中

·對(duì)象Paginator是用來(lái)進(jìn)行分頁(yè)處理的,可以把一組數(shù)據(jù)按照每頁(yè)n條進(jìn)行分隔

·對(duì)象Page用于表示第m頁(yè)的數(shù)據(jù)

#Paginator對(duì)象
方法init(列表,int):返回分頁(yè)對(duì)象,參數(shù)為列表數(shù)據(jù),每面數(shù)據(jù)的條數(shù)
方法page(m):返回Page對(duì)象,表示第m頁(yè)的數(shù)據(jù),下標(biāo)以1開(kāi)始
屬性page_range:返回頁(yè)碼列表,從1開(kāi)始,例如[1, 2, 3, 4]
屬性count:返回對(duì)象總數(shù)
屬性num_pages:返回頁(yè)面總數(shù)
#Page對(duì)象
調(diào)用Paginator對(duì)象的page()方法返回Page對(duì)象,不需要手動(dòng)構(gòu)造
屬性number:返回當(dāng)前是第幾頁(yè),從1開(kāi)始
屬性paginator:當(dāng)前頁(yè)對(duì)應(yīng)的Paginator對(duì)象
方法has_next():如果有下一頁(yè)返回True
方法has_previous():如果有上一頁(yè)返回True
屬性object_list:返回當(dāng)前頁(yè)對(duì)象的列表
方法len():返回當(dāng)前頁(yè)面對(duì)象的個(gè)數(shù)

上述就是小編為大家分享的python django的功能有什么了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

名稱欄目:pythondjango的功能有什么-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://bm7419.com/article40/dihjeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、微信公眾號(hào)、定制開(kāi)發(fā)外貿(mào)網(wǎng)站建設(shè)、ChatGPTGoogle

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)