創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)義縣免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)python django的功能有什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
靜態(tài)文件
·將靜態(tài)文件放到一個單獨的目錄中,以方便管理
- 靜態(tài)文件可以放在項目根目錄下,也可以放在應用的目錄下
- 由于有些靜態(tài)文件在項目中是通用的,所以推薦放在項目的根目錄下,方便管理
·在項目的setting文件中,通過STATICFILES_DIRS列表配置靜態(tài)文件的加載路徑
·在html頁面調(diào)用靜態(tài)文件時,需要指定靜態(tài)文件所在的路徑
·為了安全和方便維護,可以通過配置項達到隱藏真實靜態(tài)文件路徑的目的
- 使用static標簽,根據(jù)配置項動態(tài)生成靜態(tài)文件路徑(結(jié)合Nginx布署時,會將所有的靜態(tài)文件都交給Nginx處理,而不用轉(zhuǎn)到Django部分,所以這項配置就無效了,這個功能有些雞肋!)
#反向解析加載靜態(tài)圖片路徑 {% load staticfiles %} {% static 'images/01.jpg'%}
中間件
·概念:Django中的中間件是一個輕量級、底層的插件系統(tǒng),可以介入Django的請求和響應處理過程,修改Django的輸入或輸出;中間件的設計為開發(fā)者提供了一種無侵入式的開發(fā)方式,增強了Django框架的健壯性,其它的MVC框架也有這個功能,名稱為IoC。
·使用場景:當某些操作在每次請求或響應時都會執(zhí)行時,可以寫在中間件中
·設計思想:面向切面編程/無侵害式編程
# 中間件方法(Django在中間件中預置了六個方法,這六個方法的區(qū)別在于不同的階段執(zhí)行,對輸入或輸出進行干預) 1.初始化:無需任何參數(shù),服務器響應第一個請求的時候調(diào)用一次,用于確定是否啟用當前中間件 def __init__(): pass 2.處理請求前:在每個請求上調(diào)用,返回None或HttpResponse對象 def process_request(request): pass 3.處理視圖前:在每個請求上調(diào)用,返回None或HttpResponse對象 def process_view(request, view_func, view_args, view_kwarge): pass 4.處理模板相應前:在每個請求上調(diào)用 ,返回實現(xiàn)了render方法的相應對象 def process_temlate_pesponse(request, response): pass 5.處理響應后:所有響應返回瀏覽器之前被調(diào)用,在每個請求上調(diào)用,返回HttpResponse對象 def process_response(request, response): pass 6.異常處理:當視圖拋出異常時調(diào)用,在每個請求上調(diào)用,返回一個HttpResponse對象 def process_exception(request, exception) # 自定義中間件 - 中間件是一個獨立的python類,可以定義這六個方法中的一個或多個 - 在應用中新建middleware.py文件,在文件中定義類TestMiddleware - 配置自定義中間件:應用.文件名.類名 == Book.middleware.TestMiddleware #如果多個中間件中注冊了相同的方法,則先注冊的后執(zhí)行
站點管理
·內(nèi)容發(fā)布的部分由網(wǎng)站的管理員負責,包括查看、添加、修改、刪除數(shù)據(jù)
·Django項目中默認啟用Admin管理站點:列表頁選項, 編輯頁選項, 重寫模板
#準備工作 啟用mysql數(shù)據(jù)庫+定義AreaInfo模型類+創(chuàng)建管理員+注冊模型類 再 重寫模型__str__ # 控制站點管理頁的展示 - 類ModelAdmin可以控制模型在Admin界面中的展示方式,主要包括在列表頁的展示方式、添加修改頁的展示方式 - 注冊模型類前定義管理類AreaAdmin class AreaAmin(admin.ModelAdmin): pass - 管理類有兩種使用方式 1.注冊參數(shù) admin.site.register(AreaInfo, AreaAdmin) 2.裝飾器 @admin.register(AreaInfo) class AreaAmin(admin.ModelAdmin): pass
列表頁選項
·頁大小
#設置每頁展示的條數(shù),默認每頁顯示100條 list_per_page = 100
·操作選項Action的位置:默認在管理頁面的頂部有一個,管理頁面底部沒有
# 在頭部增加一個 actions_on_top = True # 在底部增加一個 actions_on_bottom = False
·列表中的列: 指定在模型列表中顯示哪些字段作為列
# 指定展示的字段 list_display = [字段1, 字段2, ...] # 定義模型方法作為列 def title(self): return self.name # 指定方法作為列的排序依據(jù) title.admin_order_field = 'name'
·模型方法為列:模型方法和模型字段都指定為列顯示在管理界面上
·列標題:默認為屬性或方法的名稱,可以通過屬性設置為其他名稱。設置方式
1.short_description 屬性設置 - 方法名.short_description = '列標題 2.verbose_name 屬性設置
右側(cè)欄過濾器:只能接收字段,會將對應字段的值列出來,用于快速過濾,一般用于有重復值的字段
list_filter = ['字段1', '字段2', ...]
搜索框:用于對指定字段的值進行搜索,支持模糊查詢
search_fields = ['字段1', '字段2', ...]
編輯頁選項
·字段順序:根據(jù)列表順序指定編輯界面字段順序
fields = ['字段1', '字段2', ...]
·字段分組:字段分組fieldsets與字段順序fields二選一使用
fieldsets = ( ('組1標題', {'fields': ('字段1', '字段2')}), ('組2標題', {'fields': ['字段3', '字段4']}), )
·關(guān)聯(lián)對象
在一對多的關(guān)系中,可以在一端的編輯頁面中編輯多端的對象 - 嵌入多端對象的方式包括表格、塊兩種 類型InlineModelAdmin:表示在模型的編輯頁面嵌入關(guān)聯(lián)模型的編輯 - 子類StackedInline:以塊的形式嵌入 - 子類TabularInline:以表格的形式嵌入 在admin.py文件中,創(chuàng)建AreaStackedInline類,繼承自admin.StackedInline
重寫模板
·當我們需要修改站點管理頁面的樣式時,可以重寫站點的模板
在templates 目錄下創(chuàng)建 admin目錄 再在admin文件下創(chuàng)建base_site.html
上傳圖片
·兩種方式上傳圖片(上傳后,將圖片存儲在項目靜態(tài)文件中,然后將圖片的路徑存儲在數(shù)據(jù)庫表中)
·在站點管理頁面中上傳圖片
·自定義form表單中上傳圖片
# 保存在static目錄下,media表示多媒體文件目錄,圖片上傳后保存的路徑:static/media/Book # 在settings中,配置圖片上傳后保存的目錄 MEIA_ROOT=os.path.join(BASE_DIR, 'static/media') # 后臺站點上傳圖片 # 自定義表單上傳圖片 chunks() 保證數(shù)據(jù)安全
分頁
·Django提供了數(shù)據(jù)分頁類,定義在django.core.paginator中
·對象Paginator是用來進行分頁處理的,可以把一組數(shù)據(jù)按照每頁n條進行分隔
·對象Page用于表示第m頁的數(shù)據(jù)
#Paginator對象 方法init(列表,int):返回分頁對象,參數(shù)為列表數(shù)據(jù),每面數(shù)據(jù)的條數(shù) 方法page(m):返回Page對象,表示第m頁的數(shù)據(jù),下標以1開始 屬性page_range:返回頁碼列表,從1開始,例如[1, 2, 3, 4] 屬性count:返回對象總數(shù) 屬性num_pages:返回頁面總數(shù) #Page對象 調(diào)用Paginator對象的page()方法返回Page對象,不需要手動構(gòu)造 屬性number:返回當前是第幾頁,從1開始 屬性paginator:當前頁對應的Paginator對象 方法has_next():如果有下一頁返回True 方法has_previous():如果有上一頁返回True 屬性object_list:返回當前頁對象的列表 方法len():返回當前頁面對象的個數(shù)
上述就是小編為大家分享的python django的功能有什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道。
名稱欄目:pythondjango的功能有什么-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://redsoil1982.com.cn/article40/dihjeo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設、微信公眾號、定制開發(fā)、外貿(mào)網(wǎng)站建設、ChatGPT、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容