成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Django框架靜態文件處理、中間件、上傳文件操作實例詳解

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

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

Django靜態文件處理、中間件、上傳文件靜態文件處理

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

a. 在創建目錄前,我們需要配置靜態文件的路徑。如:

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

b. 創建static目錄,如圖:

Django框架靜態文件處理、中間件、上傳文件操作實例詳解

c. 例子

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

中間件是一個輕量級、底層的插件系統,可以介入Django的請求和響應處理過程,修改Django的輸入或輸出。

a. 在Django中,中間件配置

在項目的settings.py文件中,有一個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文件中,默認是MIDDLEWARE,我們要是用中間件,需要改成MIDDLEWARE_CLASSES。

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

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

如圖:

Django框架靜態文件處理、中間件、上傳文件操作實例詳解

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

c. 示例

# 定義一個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’ # 一般配置成靜態文件目錄下

在項目中,創建/static/media/目錄

Django框架靜態文件處理、中間件、上傳文件操作實例詳解

b. 配置url

在項目的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個方法,分別為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 方法 錯誤’)

e. 瀏覽器操作

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

出現如下表單:

Django框架靜態文件處理、中間件、上傳文件操作實例詳解

選擇圖片,點擊上傳,出現上傳成功,表示圖片已上傳到文件中。

希望本文所述對大家基于Django框架的Python程序設計有所幫助。

標簽: Django
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美变态tickling挠脚心| 中文在线资源观看网站视频免费不卡| 久久久综合九色合综国产精品| 精品综合久久久久久8888| 国产亚洲福利| 国产精品热久久久久夜色精品三区| 成人一区二区三区视频| 欧美精品1区2区| 另类调教123区| 91国在线观看| 日韩精品久久久久久| 美日韩精品视频| 日韩中文字幕亚洲一区二区va在线| 一级日韩一区在线观看| 中文字幕综合网| 国产精品地址| 国产精品国产三级国产| 欧美色图首页| 国产精品国产自产拍高清av| 欧美理论在线| 亚洲国产电影在线观看| 欧美高清一区二区| 欧美激情一区在线观看| 午夜精品电影| 国产精品欧美一级免费| 色综合天天在线| 国产亚洲精品中文字幕| 欧美/亚洲一区| 中文无字幕一区二区三区 | 女主播福利一区| 国产精品久久久久9999吃药| 亚洲高清不卡| 亚洲成人tv网| 色综合久久久久综合体桃花网| 日韩黄色小视频| 一本一道综合狠狠老| 久久国产欧美日韩精品| 91精品黄色片免费大全| 成人福利在线看| 欧美国产视频在线| 伊人色综合久久天天五月婷| 艳妇臀荡乳欲伦亚洲一区| 亚洲专区欧美专区| 麻豆精品国产91久久久久久| 欧美日韩国产高清一区二区三区| 国产精品中文字幕日韩精品| 精品国产乱码久久| 韩国在线视频一区| 亚洲主播在线观看| 久久久水蜜桃| 免费人成黄页网站在线一区二区| 欧美四级电影在线观看| 成人午夜电影网站| 日韩一区中文字幕| 一本到一区二区三区| 国产.欧美.日韩| 中文字幕欧美日韩一区| 99精品欧美一区二区三区| 日日摸夜夜添夜夜添精品视频| 91精品国产丝袜白色高跟鞋| 91小视频免费看| 亚洲精品伦理在线| 91激情五月电影| 国产+成+人+亚洲欧洲自线| 国产无人区一区二区三区| 亚洲激情影院| 日本欧美加勒比视频| 日韩精品影音先锋| 亚洲精品在线视频观看| 秋霞电影网一区二区| 精品久久久久久久久久久院品网| 亚洲一级特黄| 奇米影视一区二区三区| 精品捆绑美女sm三区| 亚洲国产91| 奇米精品一区二区三区在线观看一| 日韩亚洲欧美综合| 亚洲国产精品一区| 国产一区二区在线免费观看| 欧美国产一区在线| 久热这里只精品99re8久| 成人免费毛片高清视频| 最新国产の精品合集bt伙计| 欧洲一区二区三区免费视频| 99久久综合国产精品| 一区二区三区精品| 日韩亚洲欧美一区| 91久久综合| 国产精品一区二区在线观看网站| 国产精品不卡在线| 欧美精品在线视频| 亚洲黄色成人久久久| 国产一区二区不卡| 《视频一区视频二区| 欧美视频三区在线播放| 欧美色综合网| 精品一区二区三区免费视频| 国产精品视频一二| 在线观看视频欧美| 欧美另类视频| 国内成人免费视频| 亚洲欧美另类久久久精品| 精品视频在线看| 国内揄拍国内精品久久| 狠狠色丁香久久婷婷综| 亚洲精品综合在线| 91精品在线免费| 国产精品视频福利| 99久久综合精品| 秋霞成人午夜伦在线观看| 国产精品色眯眯| 欧美日韩国产在线观看| 亚洲国产精品一区二区第一页| 韩国一区二区在线观看| 亚洲美女在线一区| 欧美大尺度电影在线| 国产精品一区亚洲| 色综合天天综合| 国产老妇另类xxxxx| 一区二区三区四区乱视频| 亚洲精品一区二区三区在线观看| 色婷婷激情综合| 在线高清一区| 波波电影院一区二区三区| 青青草视频一区| 亚洲乱码中文字幕| 久久久99精品免费观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 综合网在线视频| 精品电影一区二区三区 | 欧美性猛交xxxxxxxx| 91久久精品一区二区别| jlzzjlzz欧美大全| 日本视频一区二区| 亚洲人成网站影音先锋播放| 欧美xxx久久| 欧美放荡的少妇| 久久激情综合| 99国内精品久久久久久久软件| 97久久久精品综合88久久| 狠狠色丁香久久婷婷综合_中| 天堂av在线一区| 一级特黄大欧美久久久| 中文字幕乱码亚洲精品一区| 精品伦理精品一区| 7777精品伊人久久久大香线蕉| 一本久道久久综合中文字幕| 一本色道88久久加勒比精品| 欧美日韩一区二区三区在线观看免| 成人性生交大片免费看中文| 久久国产福利国产秒拍| 婷婷综合久久一区二区三区| 亚洲免费三区一区二区| 中文字幕日本乱码精品影院| 中文字幕欧美日本乱码一线二线| 久久久久久久网| 日韩精品中文字幕一区二区三区| 欧美日本一区二区在线观看| 在线观看视频一区| 日本高清不卡视频| 亚洲欧美网站| 免费在线日韩av| 亚洲欧洲在线一区| 欧美天天在线| 午夜精品婷婷| 欧美精品97| proumb性欧美在线观看| 成人av网站免费| 成人午夜在线播放| 成人精品国产免费网站| 成人av网站大全| aaa欧美日韩| 91色|porny| 欧美不卡一卡二卡免费版| 欧美精品一区三区在线观看| 国产精品v日韩精品v欧美精品网站 | 色综合久久88色综合天天免费| 亚洲欧美国产精品桃花| 国产一区二区三区成人欧美日韩在线观看| 亚洲大胆在线| 在线一区视频| 久久婷婷国产综合尤物精品| 老司机一区二区三区| 蜜桃视频一区| 久久精品首页| 久热这里只精品99re8久| 欧美亚洲三级| 久久久久综合一区二区三区| 在线观看亚洲一区| 欧美日韩国产首页| 91精品国产一区二区三区香蕉| 欧美一区二区三区在线观看| 日韩欧美激情四射| 久久美女艺术照精彩视频福利播放 | 亚洲精品四区| 国产精品视频久久一区| 色伊人久久综合中文字幕| 在线观看av不卡| 欧美巨大另类极品videosbest| 欧美一卡在线观看|