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

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

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

瀏覽:325日期: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.b3g6.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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99国产精品自拍| 在线观看视频免费一区二区三区| 美女福利一区二区三区| 日韩精品一卡二卡三卡四卡无卡| 欧美国产小视频| 尹人成人综合网| 亚洲香蕉久久| 蜜臀av免费一区二区三区| 精品国产一区二区三区2021| 国产精品免费看| 精品一区二区三区在线观看视频| 另类国产ts人妖高潮视频| a国产在线视频| 日本不卡高清| 久久久精品午夜少妇| 日韩影院精彩在线| av综合电影网站| 国产一区调教| 久久香蕉网站| 黑丝美女一区二区| 久久久久免费| 伊人网在线播放| 福利一区二区免费视频| 日韩三级精品| 免费人成在线不卡| 国产午夜精品一区二区三区欧美| 欧美日一区二区| 播放一区二区| 精品亚洲美女网站| 91精品在线观看国产| 日韩一区二区三区在线免费观看| 热三久草你在线| 日韩久久精品网| 伊人久久亚洲热| 久久久久欧美精品| 日韩福利一区| 欧美日韩在线二区| 亚洲一区二区网站| 亚洲精品三级| 日韩高清在线观看一区二区| 亚洲精品系列| 国产欧美自拍| 成午夜精品一区二区三区软件| 成人免费网站www网站高清| 久久精选视频| 五月天久久网站| 欧美丝袜一区| 亚洲精品成a人ⅴ香蕉片| 综合色一区二区| 伊人久久亚洲| 欧美日韩a区| 国产一区二区三区不卡视频网站| 久久久久久色| 国产v日韩v欧美v| 日韩一级精品| 国产欧美日韩综合一区在线播放| 国产一区二区三区四区五区| 欧美~级网站不卡| 国产欧美日韩精品一区二区免费 | 日本精品一区二区三区在线观看视频| 国产模特精品视频久久久久| 国产一区二区精品久| 激情综合自拍| 国产精品久一| 色狠狠一区二区三区| 天堂成人免费av电影一区| 日韩欧美一区免费| 国产精品videossex久久发布| 国产精品三上| 一区三区视频| 91精品国产自产在线观看永久∴| 国产精品久久久久av蜜臀| 久久久久久亚洲精品美女| 99久久久久国产精品| 日韩电影免费在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 美国三级日本三级久久99| 99tv成人| 欧美一区二区三区激情视频| 丝袜亚洲精品中文字幕一区| 亚洲激情偷拍| 免费人成黄页网站在线一区二区| 国产欧美91| 国产欧美自拍一区| 日韩影院在线观看| 欧洲激情综合| 男女激情视频一区| 视频一区二区三区在线| 四虎国产精品免费观看| 国产亚洲久久| 国产成人免费| 久久中文字幕二区| 亚洲成人免费| 亚洲精品自拍| 日韩网站在线| 久久精品主播| 色婷婷成人网| 91免费精品| 亚洲三级视频| 亚洲免费高清| 婷婷亚洲五月| 亚洲激情不卡| 亚洲精品在线观看91| 免费不卡在线视频| 免费人成精品欧美精品| 久久久夜夜夜| 国产精品第一| 日精品一区二区三区| 国产高潮在线| 成人精品国产亚洲| 欧美日韩伊人| 亚洲青青久久| 日韩中文字幕一区二区三区| 99久久久国产精品美女| 9999国产精品| 久久精品国产网站| 国产欧美日韩在线一区二区 | 日本成人一区二区| 99成人在线| 日韩伦理福利| 成人国产精品一区二区网站| 成人片免费看| 宅男噜噜噜66国产日韩在线观看| 欧美亚洲网站| 国产亚洲高清视频| 激情婷婷久久| 91视频精品| **爰片久久毛片| 麻豆国产欧美日韩综合精品二区| 国产精成人品2018| 久久精品卡一| 丝袜美腿亚洲色图| 亚洲区国产区| 精品视频在线一区二区在线| 综合激情一区| 免费的成人av| 欧美精品第一区| 欧美日韩国产高清| 99国产精品视频免费观看一公开| 日本亚州欧洲精品不卡| 日韩av免费| 亚洲不卡系列| 视频在线观看一区| 日本欧美一区二区| 国产精品白丝久久av网站 | 激情久久久久久久| 夜夜嗨av一区二区三区网站四季av| 欧美午夜三级| 亚洲夜间福利| 国产欧美日韩一区二区三区四区| 日韩在线视频精品| 亚洲成人不卡| 中国女人久久久| 久久狠狠久久| 亚洲电影在线| 国产精品亚洲片在线播放| 久久精品一区| 精品一区二区三区免费看| 日韩黄色在线观看| 欧美日韩国产综合网| 亚洲青青久久| 久久久久蜜桃| 国产一区二区三区网| 国产精品美女久久久浪潮软件| 99国产精品视频免费观看一公开 | 欧美激情aⅴ一区二区三区| 日本一二区不卡| 免费久久精品| 国产精品1区| 日韩精品欧美大片| 中文无码日韩欧| 成人在线免费观看网站| 国产传媒在线观看| 蜜桃一区二区三区在线观看| 国产中文一区| 精品视频自拍| 国产极品一区| 久久只有精品| 日韩av有码| 欧美天堂一区二区| 亚洲啊v在线免费视频| 三级久久三级久久久| 亚洲在线国产日韩欧美| 国产香蕉精品| 在线国产一区二区| 激情综合五月| 亚洲一区二区三区四区五区午夜| 久久久久亚洲| 欧美jjzz| 国产v综合v| 99在线观看免费视频精品观看| 99re国产精品| 亚洲欧美久久久| 亚洲黄色在线| 国产精品普通话对白| 日本中文字幕视频一区| 日本中文字幕不卡| 国产午夜一区| 欧美日韩在线二区| 久久精品免视看国产成人|