python相册管理系统_Django实现一个相片管理系统01
有些日子沒寫筆記,O(∩_∩)O哈哈~實(shí)在是肚子沒有墨水啦!今天不寫數(shù)據(jù)結(jié)構(gòu)啦!多懷念研究數(shù)據(jù)結(jié)構(gòu)的日子啊!
可是呢!最近有個(gè)項(xiàng)目要搞圖像管理方面的,具體內(nèi)容就不說啦!我們今天來實(shí)現(xiàn)一個(gè)簡單的相冊(cè)管理系統(tǒng)!
使用的系統(tǒng)是linux ubuntu;python2.7 ;django版本可以通過以下方式查詢;
我的是1.8.1目前是最新的吧!
好啦!看看我們將要完成的任務(wù);
1)實(shí)現(xiàn)上傳圖像的功能;
2)在圖像管理界面顯示每一張圖像的名字,還有縮略圖;
簡單的說django已經(jīng)幫我們做啦大部分工作,我們需要寫的東西非常簡單的;
Solution
1)創(chuàng)建項(xiàng)目;
django-admin.py startproject myproject
2)進(jìn)入項(xiàng)目
cd myproject
3)創(chuàng)建應(yīng)用
django-admin.py startapp myapp
4)查看你當(dāng)前的目錄是不是像下面這樣的;
好啦!工程創(chuàng)建完畢;配置配置啦!不要說到配置就怕啦!(以前配置apache我就挺煩的)
1)進(jìn)入內(nèi)層的myproject目錄
cd myproject
2)編輯settings.py文件(目前需要修改兩處)
注意,我們與其他的內(nèi)容保持隊(duì)形:D添加好myapp后;由于我們需要上傳文件,所以暫時(shí)需要禁用csrf..
好啦!配置完成啦!我們可以進(jìn)入到myapp里面寫些自己想實(shí)現(xiàn)的東西啦;
1)用vim打開models.py
2)執(zhí)行makemigrations命令
3)執(zhí)行migrate命令
4)執(zhí)行syncdb命令(同時(shí)選擇創(chuàng)建管理員用戶)
5)好啦!一切完成后可以運(yùn)行服務(wù)器啦;
6)輸入127.0.0.1:8000/admin/網(wǎng)址;
好啦!這個(gè)從模型編寫到在網(wǎng)站上顯示這個(gè)過程太快啦!你可以暫時(shí)休息休息,思考一下啦;
并且,試著去測試一下圖像是否能夠上傳?問問自己圖像到底會(huì)上傳到什么位置?
現(xiàn)在能不能看到圖像的縮略形式呈現(xiàn)呢?
點(diǎn)擊+號(hào),添加一張圖片看看就知道啦;
結(jié)果你不要驚訝!看看如下的結(jié)果是不是和你一樣呢?
我們沒有看到縮略圖的出現(xiàn)。現(xiàn)在我們解決它;
1)我需要一個(gè)方法來返回一段html語句,用html來顯示圖片;
看起來image_path有些怪怪的,不過先不要管它,待會(huì)我們會(huì)知道它到底是什么;
2)注冊(cè)我們這個(gè)方法屬性到管理模塊;
3)下面可以到瀏覽器測試?yán)?#xff1b;
我們得到的結(jié)果,確真的只是一段html源碼,我們可是希望它能夠顯示一張圖片的;怎么辦呢?
4)我們發(fā)現(xiàn)images/images/1414.jpg這個(gè)地址有些難懂,到底是存在什么位置啊;
雖然是我們親自上傳的,但是真的搞不清楚它存在的位置;因此,我們就自然想著要自己定義一個(gè)專用位置;
vim settings.py
MEDIA_ROOT本身就是一個(gè)全局變量,但是默認(rèn)值是空的,因此我們給自己設(shè)定一個(gè)目錄;
注意,landpack是我的用戶名,你應(yīng)該換成你自己的用戶名字例如,peter等;
檢查一下,你是否創(chuàng)建了這個(gè)目錄哦;
5)我們現(xiàn)在可以再次嘗試測試?yán)?#xff01;我們這次主要上傳一張相片,看他是不是老老實(shí)實(shí)的存到指定位置;
好啦!頁面顯示上傳成功啦!同樣,我們檢查的目錄下面的images目錄下有了一個(gè)1414.jpg文件。我們上傳成功,保存位置符合指定要求;
可是呢?我們的頁面還是沒有顯示我們的圖片;為啦節(jié)省空間,我就截盡量小的圖表示啦;
仔細(xì)觀察你會(huì)發(fā)現(xiàn),src的地址并不是我們的圖片存放的位置,這樣怎么可以顯示圖片呢。
6)因此,我們現(xiàn)在要再次殺回settings.py設(shè)置一個(gè)叫做MEDIA_URL的變量;
現(xiàn)在運(yùn)行服務(wù)器程序,如果你壓根就沒有停止python mange.py runserver那么請(qǐng)刷新一下瀏覽器哈;
還是沒有顯示,這時(shí)候你可能已經(jīng)著急啦!我們先思考一下是不是路徑還是不對(duì)呢?
哈哈,答對(duì)啦!就是路徑不對(duì),你看看這個(gè)可不是我們希望顯示的圖片所在位置;
7)我們看看我們?cè)趍odels.py里面定義的內(nèi)容;
我們發(fā)現(xiàn)錯(cuò)誤的原因是images多余啦!我們現(xiàn)在就把他刪除啦;
改成啦下面的形式,刷新瀏覽器,故障依舊;實(shí)在受不了啦吧;要知道為了解決這個(gè)問題我可是google了三天呢;
我們發(fā)現(xiàn),這個(gè)位置的確是我們MEDIA_URL設(shè)定哪個(gè),圖片名字也對(duì)啦!怎么就不能顯示呢?還記得我們的圖片保存位置嗎?我們需要怎么通過這個(gè)url映射到我們對(duì)應(yīng)的圖片實(shí)際存放位置呢?這時(shí)候我們想到了urls.py文件啦;
8)首先你要知道讓urls知道你將要使用settings.py里面定義的MEDIA_ROOT文件;當(dāng)然 patterns你應(yīng)該知道它的作用啦;
下面就是完成映射動(dòng)作;
9)接下來,刷新瀏覽器,發(fā)現(xiàn)還是不能顯示圖片;實(shí)在受不了啦。我們繼續(xù)觀察;
發(fā)現(xiàn)html語句咱們寫height=40是不是應(yīng)該改成height="40"啊;
可是改完以后還是不行,實(shí)在不行啦只有用最簡單暴力的方法啦!
直接報(bào)地址放到瀏覽器上測試;
第一次測試結(jié)果是這樣的;
很快,我們確定啦原因是端口號(hào)不對(duì)啦,我們使用的是8000,這里得地址沒有體現(xiàn)出來;
第二次測試;
結(jié)果如下;
哈哈,我上傳的圖片有些多啦!不好意思,也是為了直接將來回憶起來能夠更加清晰;
10)現(xiàn)在我們可以邁開腳步往settings.py走去,修改MEDIA_URL的地址加上端口號(hào);
結(jié)果呢?還是沒有顯示出來,這個(gè)問題就是傷腦筋,我之所以有重現(xiàn)這些,是因?yàn)槲覍?shí)在是覺得這個(gè)問題比較棘手,因此記錄下每一步嘗試;
你現(xiàn)在肯定在想一會(huì)是html文件,一會(huì)又是python文件,實(shí)在是受不了啦!咱們到底能不能分開寫;
當(dāng)然可以啦!!
首先,我們使用一個(gè)render_to_string的功能;
打開我們的models.py文件;
那么咱們?cè)趺匆雛ender_to_string 呢?
好啦!現(xiàn)在我們需要的全部是python代碼已經(jīng)寫完,可以放心的去寫html文件啦
11)那么首先需要一個(gè)地方保存html文件,好吧現(xiàn)在咱們是在myapp目錄下;
然后你得進(jìn)入templates再動(dòng)手;
接下來是怎么去寫咱們的html文件啦;
好啦!現(xiàn)在終于可以測試?yán)?#xff1b;
好啦!結(jié)果終于讓我們有高興起來啦!不過你現(xiàn)在肯定再想,為什么剛才的寫法就是無法顯示圖片呢?那得自己去思考思考啦。
最后,不得不得表示歉意,沒有一句可以copy的代碼,全是截圖;
原因有二:
第一,我是在虛擬機(jī)上寫的代碼,在mac上寫的博客,所以無法復(fù)制粘貼代碼;
第二,我們還是自己寫比較記得牢些哈;
總結(jié)
以上是生活随笔為你收集整理的python相册管理系统_Django实现一个相片管理系统01的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存xmp是什么意思
- 下一篇: 快手怎么看出来被屏蔽(快手短视频App快