日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Django框架靜態(tài)文件處理、中間件、上傳文件操作實(shí)例詳解

瀏覽:330日期:2024-10-23 15:20:15

本文實(shí)例講述了Django框架靜態(tài)文件處理、中間件、上傳文件操作。分享給大家供大家參考,具體如下:

Django靜態(tài)文件處理、中間件、上傳文件靜態(tài)文件處理

在Django中,一般專門創(chuàng)建一個(gè)static目錄來存放靜態(tài)文件(css,js,image,video等文件)。

a. 在創(chuàng)建目錄前,我們需要配置靜態(tài)文件的路徑。如:

#在項(xiàng)目的settings.py文件中,配置STATIC_URL,一般默認(rèn)是:STATIC_URL = ’/static/’ # ’/static/’是指uri,映射下面的static目錄。做映射可以對(duì)靜態(tài)文件起到一個(gè)保護(hù)作用,避免受到攻擊,下面介紹。STATICFILES_DIRS = [ # 指定文件目錄,BASE_DIR指的是項(xiàng)目目錄,static是指存放靜態(tài)文件的目錄。 os.path.join(BASE_DIR , ’static’), ]

b. 創(chuàng)建static目錄,如圖:

Django框架靜態(tài)文件處理、中間件、上傳文件操作實(shí)例詳解

c. 例子

{% load static from staticfiles %} <!--從staticfiles中導(dǎo)入靜態(tài)文件--><!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title></head><body><!--使用硬編碼的方式請(qǐng)求圖片,如果配置中的STATIC_URL的uri改變,這種硬編碼的形式就加載不到資源--><img src='https://rkxy.com.cn/static/myapp/1.png' alt='image'/><br/><!--使用映射的方式加載圖片,可以避免uri短鏈接改變導(dǎo)致圖片資源加載不到的問題,要用這種方式,需要導(dǎo)入第一行--><img src='http://m.b3g6.com/bcjs/{% static ’myapp/1.png’ %}' alt='image'/></body></html>中間件

中間件是一個(gè)輕量級(jí)、底層的插件系統(tǒng),可以介入Django的請(qǐng)求和響應(yīng)處理過程,修改Django的輸入或輸出。

a. 在Django中,中間件配置

在項(xiàng)目的settings.py文件中,有一個(gè)MIDDLEWARE_CLASSES的變量,里面定義的就是中間件。如:

MIDDLEWARE_CLASSES = [ ’django.middleware.security.SecurityMiddleware’, ’django.contrib.sessions.middleware.SessionMiddleware’, ’django.middleware.common.CommonMiddleware’, ’django.middleware.csrf.CsrfViewMiddleware’, ’django.contrib.auth.middleware.AuthenticationMiddleware’, ’django.contrib.messages.middleware.MessageMiddleware’, ’django.middleware.clickjacking.XFrameOptionsMiddleware’,]

在settings.py文件中,默認(rèn)是MIDDLEWARE,我們要是用中間件,需要改成MIDDLEWARE_CLASSES。

b. 每個(gè)中間件都是一個(gè)獨(dú)立的Python類,可以定義下面的方法一個(gè)或多個(gè):

__init__:無需任何參數(shù),服務(wù)器響應(yīng)第一個(gè)請(qǐng)求的時(shí)候調(diào)用一次,用于確定是否用當(dāng)前中間件。process_request(request):執(zhí)行視圖之前被調(diào)用,在每個(gè)請(qǐng)求上調(diào)用,返回None或HttpResponse對(duì)象。process_view(request,view_func,view_args,view_kwargs):調(diào)用視圖之前調(diào)用,在每個(gè)請(qǐng)求上調(diào)用,返回None或HttpResponse對(duì)象。process_template_response(request,response):在視圖剛好執(zhí)行完畢之后調(diào)用,在每個(gè)請(qǐng)求上調(diào)用,返回實(shí)現(xiàn)了render方法的響應(yīng)對(duì)象。process_response(request,response):所有響應(yīng)返回瀏覽器之前被調(diào)用,在每個(gè)請(qǐng)求上調(diào)用,返回HttpResponse對(duì)象。process_exception(request,response,exception):當(dāng)視圖拋出異常時(shí)調(diào)用,在每個(gè)請(qǐng)求上調(diào)用,返回一個(gè)HttpResponse對(duì)象。

如圖:

Django框架靜態(tài)文件處理、中間件、上傳文件操作實(shí)例詳解

使用中間件,可以干擾整個(gè)處理過程,每次請(qǐng)求中都會(huì)執(zhí)行中間件的方法。中間件是實(shí)際上是AOP(面向切片編程)的概念。

c. 示例

# 定義一個(gè)MyTrace類,作為中間件class MyTrace(object): def process_request(self, request): print(’process request’) def process_view(self, request, views, views_args, views_kwargs): print(’process view’) def process_template_response(self, request, response): print(’process template response’) return render(request=request, template_name=’base.html’) def process_response(self, request, response): print(’process response’) return HttpResponse(’process response’) def process_exception(self, request, exception): print(’process exception’) return HttpResponse(’exception’)

配置中間件,將作為中間件的類天驕到配置

MIDDLEWARE_CLASSES = [ ’django.middleware.security.SecurityMiddleware’, ’django.contrib.sessions.middleware.SessionMiddleware’, ’django.middleware.common.CommonMiddleware’, ’django.middleware.csrf.CsrfViewMiddleware’, ’django.contrib.auth.middleware.AuthenticationMiddleware’, ’django.contrib.messages.middleware.MessageMiddleware’, ’django.middleware.clickjacking.XFrameOptionsMiddleware’, ’testdjango.middleware.MyTrace’, # 自定義中間件]

配置url和定義視圖view

# 配置url,在urls.py文件中urlpatterns = [ url(r’^base$’, view.base), url(r’exception$’, view.myexception),]# 定義視圖,在view.py文件中定義def base(request): print(’base’) return HttpResponse(’response’)def myexception(request): print(’myexception’) int(’abc’) return HttpResponse(’exception’)

在瀏覽器輸入,127.0.0.1:8000/base,輸出

process requestprocess viewbaseprocess response

在瀏覽器輸入,127.0.0.1:8000/exception,輸出

process requestprocess viewmyexceptionprocess exceptionprocess response上傳圖片

a. 配置上傳圖片的路徑

在settings.py文件中,配置MEDIA_ROOT,如:

MEDIA_ROOT = BASE_URL + ’/static/media’ # 一般配置成靜態(tài)文件目錄下

在項(xiàng)目中,創(chuàng)建/static/media/目錄

Django框架靜態(tài)文件處理、中間件、上傳文件操作實(shí)例詳解

b. 配置url

在項(xiàng)目的urls.py文件,配置url,如:

urlpatterns = [ url(r’upload/form/’,view.form), # 上傳圖片的form表單 url(r’upload/image/’,view.image), # 上傳圖片的url]

c. 編寫模板

表單模板,upload_form.html<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title></head><body><form action='/upload/image/' method='post' enctype='multipart/form-data'> {% csrf_token %} <input type='file' name='image'> <br> <input type='submit' value='上傳'></form></body></html>

d. 處理視圖邏輯

在view.py文件定義2個(gè)方法,分別為form()和image(),如:

def form(request): return render(request=request, template_name=’update_form.html’)def image(request): if request.method == ’POST’: image = request.FILES[’image’] imageName = os.path.join(settings.MEDIA_ROOT, image.name) print(imageName) with open(imageName, ’wb’) as f: for image_part in image.chunks():f.write(image_part) return HttpResponse(’上傳成功’) else: return HttpResponse(’method 方法 錯(cuò)誤’)

e. 瀏覽器操作

在瀏覽器中輸入,127.0.0.1:8000/upload/form

出現(xiàn)如下表單:

Django框架靜態(tài)文件處理、中間件、上傳文件操作實(shí)例詳解

選擇圖片,點(diǎn)擊上傳,出現(xiàn)上傳成功,表示圖片已上傳到文件中。

希望本文所述對(duì)大家基于Django框架的Python程序設(shè)計(jì)有所幫助。

標(biāo)簽: Django
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩一区二区免费看| 在线精品视频在线观看高清| 97久久中文字幕| 久久av国产紧身裤| 色天使综合视频| 国产精品丝袜xxxxxxx| 91精品尤物| 福利一区和二区| 红桃视频国产精品| 久久国产生活片100| 在线天堂资源www在线污| 黑丝一区二区三区| 国产欧美日韩视频在线| 日韩精品水蜜桃| 丝袜亚洲另类欧美| 国产精品探花在线观看| 亚洲播播91| 一区二区三区网站| 国产在视频一区二区三区吞精| 亚洲激情中文在线| 亚洲精品裸体| 日韩欧美视频专区| 亚洲深深色噜噜狠狠爱网站 | 国产一区二区色噜噜| 性欧美69xoxoxoxo| 日本午夜精品久久久久| 日韩成人亚洲| 日本va欧美va欧美va精品| 欧美精品高清| 日韩综合一区二区三区| а√天堂8资源中文在线| 免费在线观看不卡| 韩日一区二区| 亚洲精一区二区三区| yellow在线观看网址| 日韩免费精品| 伊人精品一区| 国产一区精品福利| 日韩av中文在线观看| 99成人在线| 免费福利视频一区二区三区| 日本成人在线一区| 狠狠爱成人网| 伊人网在线播放| 国产探花在线精品| 久热re这里精品视频在线6| 天堂√中文最新版在线| 国产精品久一| 亚洲精品少妇| 免费毛片在线不卡| 国产一二在线播放| 日本a口亚洲| 六月婷婷一区| 久久精品高清| 狠狠久久伊人| 国产欧美一级| 午夜视频一区二区在线观看| 在线日韩视频| 97精品国产一区二区三区| 91精品丝袜国产高跟在线| 国产精品美女久久久浪潮软件| 日韩一区二区三区高清在线观看| 国产精品宾馆| 日韩精品一级| 国产美女一区| 亚洲成人免费| 91精品xxx在线观看| 成午夜精品一区二区三区软件| 99国产精品久久久久久久| 欧美日韩视频免费观看| 97精品视频在线看| 国产aⅴ精品一区二区四区| 国产乱码精品一区二区亚洲| 亚洲三级网站| 综合干狼人综合首页| 丝袜亚洲精品中文字幕一区| 亚洲一卡久久| 尤物在线精品| 99在线|亚洲一区二区| 久久久久久久久丰满| 国产中文在线播放| 成人精品久久| 欧美日韩国产观看视频| 日韩av在线播放网址| 福利一区二区三区视频在线观看| 在线看片日韩| 不卡在线一区二区| 日韩一区二区三区免费播放| 国产精品亚洲一区二区三区在线观看| 日本免费新一区视频| 蜜臀va亚洲va欧美va天堂| 先锋亚洲精品| 亚洲一区有码| 91精品国产自产观看在线| 日韩av二区在线播放| 国产日韩欧美在线播放不卡| 国产欧美日韩在线观看视频| 国产精品大片免费观看| 国产精品久久久久久妇女| 国产精品久久久久久久久久白浆| 久久高清国产| 亚洲欧美日韩国产综合精品二区| 精品在线网站观看| 精品三级国产| 在线中文字幕播放| 久久国产主播| 在线午夜精品| 亚洲三级视频| 国产欧美自拍| 精品视频在线观看网站| 成人在线免费观看网站| 欧美xxxx中国| 亚洲午夜91| 首页欧美精品中文字幕| 亚洲专区视频| 日韩综合一区二区三区| 四虎精品一区二区免费| 国产美女久久| 国产精品99一区二区三区| 亚洲国产综合在线看不卡| 国产色综合网| 国产一区 二区| 国产91欧美| 午夜国产一区二区| 日本va欧美va精品| 91一区二区三区四区| 99xxxx成人网| 国产日韩在线观看视频| 成人精品久久| 鲁大师影院一区二区三区| 欧美三区不卡| 超级白嫩亚洲国产第一| 欧美在线网站| 国产亚洲人成a在线v网站| 91亚洲国产成人久久精品| 久久国产福利| 久久久国产精品入口麻豆| 欧美午夜精品一区二区三区电影| 99精品视频在线| 日本v片在线高清不卡在线观看| 亚洲人www| 91免费精品| 中文字幕一区二区三区日韩精品 | 久久青草久久| 日韩在线一二三区| 精品免费在线| 久久高清免费观看| 精品欧美视频| 午夜在线视频一区二区区别| 久久影视三级福利片| 国产色综合网| 国产一区二区三区精品在线观看| 精品精品99| 免费不卡中文字幕在线| 日韩av一区二区三区四区| 啪啪国产精品| 欧美一区二区三区久久| 国产v综合v| 国产欧美精品| 亚洲在线观看| 日韩大片在线观看| 日本va欧美va瓶| 久久香蕉国产| 久久亚州av| 视频一区二区国产| 日本黄色精品| 亚州精品视频| 亚洲福利精品| 精品免费视频| 欧美伊人久久| 石原莉奈一区二区三区在线观看| 日韩福利视频导航| 国产91精品对白在线播放| 青青草伊人久久| 国产精品女主播一区二区三区| 日韩动漫一区| 国产尤物精品| www.九色在线| 久久精品国产精品亚洲毛片| 亚洲精品自拍| 午夜日韩av| 蜜臀久久精品| 精品一区二区男人吃奶 | 精品国产午夜| **爰片久久毛片| 中文视频一区| 91精品1区| 午夜精品成人av| 国产欧美综合一区二区三区| 亚洲精品裸体| 免费日本视频一区| 黄色成人精品网站| 人人香蕉久久| 国产96在线亚洲| 精品亚洲自拍| 久久不卡日韩美女| 欧美伊人久久| 久久精品999| 91欧美精品| 欧美伊人久久|