电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Django 實現圖片上傳和下載功能

瀏覽:132日期:2024-09-14 15:32:39
原生上傳圖片方式

#新建工程 python manage.py startapp test30#修改 settings.pyINSTALLED_APPS = [ ’django.contrib.admin’, ’django.contrib.auth’, ’django.contrib.contenttypes’, ’django.contrib.sessions’, ’django.contrib.messages’, ’django.contrib.staticfiles’, ’stu’]#修改urls.pyfrom django.conf.urls import url, includefrom django.contrib import adminurlpatterns = [ url(r’^admin/’, admin.site.urls), url(r’student/’,include(’stu.urls’)),]#新增加 stu/urls.py #coding:utf-8from django.conf.urls import urlimport viewsurlpatterns = [ url(r’^$’,views.index_view)]#編輯 stu/views.py # -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.http import HttpResponsefrom django.shortcuts import render# Create your views here.#原生上傳文件方式def index_view(request): if request.method == ’GET’: return render(request,’index.html’) elif request.method == ’POST’: #獲取請求參數 uname = request.POST.get(’uname’,’’) photo = request.FILES.get(’photo’,’’) print photo.name import os print os.getcwd() if not os.path.exists(’media’): os.mkdir(’media’) #拼接路徑 with open(os.path.join(os.getcwd(),’media’,photo.name),’wb’) as fw: # photo.read() #一次性讀取文件到內存 # fw.write(photo.read()) #分塊讀取,性能高 for ck in photo.chunks():fw.write(ck) return HttpResponse(’It is post request,上傳成功’) else: return HttpResponse(’It is not post and get request!’)#新增加模板文件 templates/index.html<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title></head><body><form action='/student/' method='post' enctype='multipart/form-data'> {% csrf_token %} <p> <label for='ua'>姓名: </label> <input type='text' name='uname' /> </p> <p> <label for='ph'>頭像: </label> <input type='file' name='photo' /> </p> <p> &emsp;&emsp;&emsp;&emsp;&emsp;<input type='submit' value='注冊'/> </p></form></body></html>#效果如下:訪問: http://127.0.0.1:8000/student/

Django 實現圖片上傳和下載功能

Django 實現圖片上傳和下載功能

Django 實現圖片上傳和下載功能

Django 圖片上傳方式

需求:效果: 訪問 http://127.0.0.1:8000/student/ 通過注冊將姓名、頭像地址傳入數據庫中;訪問 http://127.0.0.1:8000/student/showall 將數據庫信息通過表格形式展示###過程#修改 settings.py ,templates 新增加 ’django.template.context_processors.media’TEMPLATES = [ { ’BACKEND’: ’django.template.backends.django.DjangoTemplates’, ’DIRS’: [os.path.join(BASE_DIR, ’templates’)] , ’APP_DIRS’: True, ’OPTIONS’: { ’context_processors’: [’django.template.context_processors.debug’,’django.template.context_processors.request’,’django.contrib.auth.context_processors.auth’,’django.contrib.messages.context_processors.messages’,’django.template.context_processors.media’ ], }, },]末尾增加:# global_settings#指定上傳文件存儲相對路徑(讀取文件)MEDIA_URL = ’/media/’#指定上傳文件存儲絕對路徑(存儲文件)MEDIA_ROOT = os.path.join(BASE_DIR,’media’)#創建數據庫模型 stu/models.py# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.db import models# Create your models here.class Student(models.Model): sno = models.AutoField(primary_key=True) sname = models.CharField(max_length=30) photo = models.ImageField(upload_to=’imgs’) def __unicode__(self): return u’Student:%s’%self.sname#生成數據庫遷移文件,查看數據庫表結構python makemigrations stupython migrate #修改 urls.py 因為顯示問題,增加 DEBUG 內容from django.conf.urls import url, includefrom django.contrib import adminfrom test30.settings import DEBUG, MEDIA_ROOTurlpatterns = [ url(r’^admin/’, admin.site.urls), url(r’student/’,include(’stu.urls’)),]from django.views.static import serveif DEBUG: urlpatterns+=url(r’^media/(?P<path>.*)/$’, serve, {'document_root': MEDIA_ROOT}),#修改 urls, stu/urls.py#coding:utf-8from django.conf.urls import urlimport viewsurlpatterns = [ url(r’^$’,views.index_view), url(r’^upload/$’,views.upload_view), url(r’^showall/$’,views.showall_view)]# 修改 stu/views.py#django 上傳文件方式def upload_view(request): uname = request.POST.get(’uname’,’’) photo = request.FILES.get(’photo’,’’) #入庫操作 Student.objects.create(sname=uname,photo=photo) return HttpResponse(’上傳成功!’)#顯示圖片def showall_view(request): stus = Student.objects.all() print stus return render(request,’show.html’,{’stus’:stus})# 修改 index.html<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title></head><body><form action='/student/upload/' method='post' enctype='multipart/form-data'> {% csrf_token %} <p> <label for='ua'>姓名: </label> <input type='text' name='uname' /> </p> <p> <label for='ph'>頭像: </label> <input type='file' name='photo' /> </p> <p> &emsp;&emsp;&emsp;&emsp;&emsp;<input type='submit' value='注冊'/> </p></form></body></html># 增加模板文件 show.html<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title></head><body><table border='1' cellspacing='0'> <tr> <th>編號</th> <th>姓名</th> <th>頭像</th> <th>操作</th> </tr> {% for stu in stus %} <tr> <td>{{ forloop.counter }}</td> <td>{{ stu.sname }}</td> <td><img src='http://www.hdgsjgj.cn/bcjs/{{ MEDIA_URL }}{{ stu.photo }}'/></td> <td> 下載</td> </tr> {% endfor %}</table></body></html>效果圖:http://127.0.0.1:8000/student/ 注冊實現數據庫錄入操作(點擊提交通過index.html 中action='/student/upload/' 將url 轉發至函數upload_view ,實現上傳功能)http://127.0.0.1:8000/student/showall/ 實現數據庫信息展示

Django 實現圖片上傳和下載功能

Django 實現圖片上傳和下載功能

圖片下載功能

### 需求在顯示頁面點擊下載實現圖片的下載功能過程:#修改 show.html ,加入 下載的超鏈接<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title></head><body><table border='1' cellspacing='0'> <tr> <th>編號</th> <th>姓名</th> <th>頭像</th> <th>操作</th> </tr> {% for stu in stus %} <tr> <td>{{ forloop.counter }}</td> <td>{{ stu.sname }}</td> <td><img src='http://www.hdgsjgj.cn/bcjs/{{ MEDIA_URL }}{{ stu.photo }}'/></td> <td><a href='http://www.hdgsjgj.cn/student/download/?photo={{ stu.photo }}' rel='external nofollow' >下載</a></td> </tr> {% endfor %}</table></body></html>#因為 show.html href='http://www.hdgsjgj.cn/student/download ,所以要修改urls#修改 stu/urls.py,新增加 urlurl(r’^download/$’,views.download_view)#修改 stu/views.pydef download_view(request): # 獲取請求參數(圖片存儲位置) imgs/5566.jpg photo = request.GET.get(’photo’,’’) print photo # 獲取圖片文件名5566.jpg ; rindex 為字符 ’/’ 在 photo 中最后出現的位置索引;例如 # txt = 'imgs/5566.jpg' # x = txt.rindex('/') # print txt[x + 1:] 輸出結果為 5566.jpg filename = photo[photo.rindex(’/’)+1:] print filename #開啟一個流 import os path = os.path.join(os.getcwd(),’media’,photo.replace(’/’,’’)) print path with open(path,’rb’) as fr: response = HttpResponse(fr.read()) response[’Content-Type’]=’image/png’ response[’Content-Disposition’] = ’attachment;filename=’ + filename return response#訪問 http://127.0.0.1:8000/student/showall/ ,點擊下載

Django 實現圖片上傳和下載功能

以上就是Django 實現圖片上傳和下載功能的詳細內容,更多關于Django 圖片上傳和下載的資料請關注好吧啦網其它相關文章!

標簽: Django
相關文章:
主站蜘蛛池模板: 打包箱房_集成房屋-山东佳一集成房屋有限公司 | 光栅尺_Magnescale探规_磁栅尺_笔式位移传感器_苏州德美达 | 充气膜专家-气膜馆-PTFE膜结构-ETFE膜结构-商业街膜结构-奥克金鼎 | 宜兴紫砂壶知识分享 - 宜兴壶人 医用空气消毒机-医用管路消毒机-工作服消毒柜-成都三康王 | 高硼硅玻璃|水位计玻璃板|光学三棱镜-邯郸奥维玻璃科技有限公司 高温高压釜(氢化反应釜)百科 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 航空障碍灯_高中低光强航空障碍灯_民航许可认证航空警示灯厂家-东莞市天翔航天科技有限公司 | 滚筒烘干机_转筒烘干机_滚筒干燥机_转筒干燥机_回转烘干机_回转干燥机-设备生产厂家 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 蒸压釜_蒸养釜_蒸压釜厂家-山东鑫泰鑫智能装备有限公司 | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 辽宁资质代办_辽宁建筑资质办理_辽宁建筑资质延期升级_辽宁中杭资质代办 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 南方珠江-南方一线电缆-南方珠江科技电缆-南方珠江科技有限公司 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 顺辉瓷砖-大国品牌-中国顺辉 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 北京晚会活动策划|北京节目录制后期剪辑|北京演播厅出租租赁-北京龙视星光文化传媒有限公司 | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 跨境物流_美国卡派_中大件运输_尾程派送_海外仓一件代发 - 广州环至美供应链平台 | 杭州营业执照代办-公司变更价格-许可证办理流程_杭州福道财务管理咨询有限公司 | 山东集装箱活动房|济南集装箱活动房-济南利森集装箱有限公司 | 电动百叶窗,开窗器,电动遮阳百叶,电动开窗机生产厂家-徐州鑫友工控科技发展有限公司 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 楼承板-开口楼承板-闭口楼承板-无锡海逵 | 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 | 玻璃钢板-玻璃钢防腐瓦-玻璃钢材料-广东壹诺 | 蒸汽吸附分析仪-进口水分活度仪|康宝百科 | 包头市鑫枫装饰有限公司| 水厂自动化-水厂控制系统-泵站自动化|控制系统-闸门自动化控制-济南华通中控科技有限公司 | 拉卡拉POS机官网 - 官方直营POS机办理|在线免费领取 | 中原网视台| 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 控显科技 - 工控一体机、工业显示器、工业平板电脑源头厂家 | 镀锌角钢_槽钢_扁钢_圆钢_方矩管厂家_镀锌花纹板-海邦钢铁(天津)有限公司 | 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 |