django 通過URL訪問上傳的文件方法
Django2.0 通過URL訪問上傳的文件(pdf、picture等)
Django是一個(gè)成熟的web框架,基于python實(shí)現(xiàn),有很多的優(yōu)點(diǎn),很容易快速上手(詳見官網(wǎng):https://www.djangoproject.com/)的文檔,Django2.0的文檔有1872頁,不得不說是非常全的,文檔是可謂包羅萬象。
Django給我的感覺是很好很強(qiáng)大,至少比flask要完整的多,如果實(shí)現(xiàn)一個(gè)簡單的需求,flask足夠了,不過要安裝各種依賴包,一個(gè)字繁瑣!而Django則集成了非常非常全的功能,不一一討論吧,下面聊一下我遇到的問題及解決的辦法,從網(wǎng)上找了很久很久,始終難以有一個(gè)完整的方法,立此存照吧。
問題:Django上傳文件很容易,那么,如何在網(wǎng)頁中通過鏈接的方式訪問(打開文件、預(yù)覽圖片、rar)文件呢?
準(zhǔn)備環(huán)境

首先是開發(fā)環(huán)境的搭建:Python、Django、pycharm、mysql的安裝(略過,網(wǎng)上有很多教程)
在pycharm中創(chuàng)建Django的工程,其目錄結(jié)構(gòu)如下:
說明:
Resource_Management_System是工程目錄
rms是Django中app的目錄(存放業(yè)務(wù)代碼的地方)
在Resource_Management_System目錄,新建了media目錄和media的子目錄upload(用于存儲(chǔ)上傳的各種文件,實(shí)際中可能要對(duì)目錄再進(jìn)行規(guī)劃)
上傳文件
Python上傳文件的代碼,為了簡單起見,直接在app的views.py中書寫上傳文件的代碼,如下:

說明:
上傳文件使用的是POST請(qǐng)求,文件的KEY值是“test.shlian”
通過request.FILE.get()取到上傳的文件對(duì)象
39-42行,是具體的寫文件代碼,把文件寫到MEDIA_ROOT目錄的upload目錄
43-44行,返回結(jié)果。
由于是示例,所以代碼簡單,沒有做任何的異常處理。
寫完代碼以后,還不能通過url上傳文件,需要做如下的配置:
配置settings.py,增加上面代碼使用的MEDIA_ROOT和后面即將使用的MDEIA_URL變量,如下:

一切就緒,通過url上傳文件的配置:

完成上述配置以后,打開cmd命令行窗口,切換到Resource_Management_System目錄,執(zhí)行命令:“python manage.py runserver 127.0.0.1:8000”,如果沒有錯(cuò)誤,會(huì)出現(xiàn)下面的界面:

至此,基于Django框架的支持文件上傳的app,已經(jīng)成功啟動(dòng)了。
通過postman測試文件上傳
打開postman,完成如下配置,并點(diǎn)擊”Send”,發(fā)送POST請(qǐng)求,

上傳成功后的顯示:

切換到setting.MEDIA_ROOT目錄,顯示如下:

恭喜!文件上傳成功!接下來,討論另外一個(gè)問題:如何通過URL訪問上傳的這個(gè)PDF文件呢?
通過URL訪問上傳的pdf文件(當(dāng)然也可以訪問其他類型的文件),主要是Django的配置了,主要是配置工程的urls.py文件,配置如下:

說明:
Import 19-21行的庫
增加25行,到urlpatterns,
通過瀏覽器打開上傳的文件:

再看一下上傳的png文件:

以上這篇django 通過URL訪問上傳的文件方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
四種Python機(jī)器學(xué)習(xí)超參數(shù)搜索方法總結(jié)
在建模時(shí)模型的超參數(shù)對(duì)精度有一定的影響,而設(shè)置和調(diào)整超參數(shù)的取值,往往稱為調(diào)參。本文將演示在sklearn中支持的四種基礎(chǔ)超參數(shù)搜索方法,需要的可以參考一下2022-11-11
OpenCV-Python實(shí)現(xiàn)多模板匹配
模板匹配就是在一幅圖像中尋找另一幅模板圖像最匹配,本文主要實(shí)現(xiàn)了多模板匹配,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
Python中函數(shù)的創(chuàng)建與調(diào)用你了解嗎
這篇文章主要為大家詳細(xì)介紹了Python中函數(shù)的創(chuàng)建與調(diào)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
Python實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)并插入到MongoDB數(shù)據(jù)庫的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)并插入到MongoDB數(shù)據(jù)庫的方法,涉及Python同時(shí)進(jìn)行SQLServer與MongoDB數(shù)據(jù)庫的連接、查詢、讀取、寫入等相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06
Python查詢Mysql時(shí)返回字典結(jié)構(gòu)的代碼
MySQLdb默認(rèn)查詢結(jié)果都是返回tuple,輸出時(shí)候不是很方便,必須按照0,1這樣讀取,無意中在網(wǎng)上找到簡單的修改方法,就是傳遞一個(gè)cursors.DictCursor就行2012-06-06
pandas DataFrame 刪除重復(fù)的行的實(shí)現(xiàn)方法
這篇文章主要介紹了pandas DataFrame 刪除重復(fù)的行的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01
關(guān)于Pycharm配置翻譯插件Translation報(bào)錯(cuò)更新TTK失敗不能使用的問題
這篇文章主要介紹了關(guān)于Pycharm配置翻譯插件Translation報(bào)錯(cuò)更新TTK失敗不能使用的問題,本文通過圖文并茂的形式給大家分享解決方案,需要的朋友可以參考下2022-04-04
Python OpenCV圖像復(fù)原的實(shí)現(xiàn)步驟
Python OpenCV圖像復(fù)原是一個(gè)涉及去除噪聲、模糊等失真的過程,旨在恢復(fù)圖像的原始質(zhì)量,以下是一個(gè)詳細(xì)的案例教程,包括理論背景和具體實(shí)現(xiàn)步驟,需要的朋友可以參考下2024-12-12
python用moviepy對(duì)視頻進(jìn)行簡單的處理
這篇文章主要介紹了python如何用moviepy對(duì)視頻進(jìn)行簡單的處理,幫助大家更好的利用python處理視頻,感興趣的朋友可以了解下2021-03-03

