django存储及显示图片
第一步:
在setting中的末尾位置配置静态文件地址
STATIC_URL = '/static/'
MEDIA_ROOT=os.path.join(BASE_DIR,"static/media")
STATICFILES_DIRS=[
os.path.join(BASE_DIR, 'static'),
]
同时在项目文件目录下创建静态文件夹以及目录,即STATICFILES_DIRS
,如下图:
第二步:建立有图片类型的模型
class PickTest(models.Model):
pic=models.ImageField(upload_to='booktest/')
#将地址设为静态文件地址下的booktest
第三步:上传图片
1.在urls配置网址 url(r'^$',views.pic_upload),
2.在veiws中进行网页配置和设置:
def pic_upload(request):
return render(request,'booktest/pic_upload.html')
3.创建上传html文件,pic_load.html
#使用表单上传数据
<form action="/pic_handler" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="pic">
<input type="submit" value="上传">
</form>
4.获取表单上传的数据,在urls配置网址连接views
· url(r'pic_handler$',views.pic_handler),`
5.在views中创建获取处理数据的方法:
def pic_handler(request):
f1=request.FILES.get('pic')
fname='%s/booktest/%s'%(settings.MEDIA_ROOT,f1.name)
picload=PickTest()
picload.pic ='booktest%s'%(f1.name)
picload.save()
with open(fname,'wb') as pic :
for c in f1.chunks():
pic.write(c)
return HttpResponse('上传成功')
第五步:展现图片
1.在urls中配置路径
url(r'show$',views.pic_show),
2.在views中创建获取数据库存有的图片数据进行显示图片操作的方法
def pic_show(request):
pic=PickTest.objects.get(id=1)
print(pic.pic)
context={'pic':pic}
return render(request,'booktest/pic_show.html',context)
3.创建显示图片的html文件(pic_upload)
<body>
<img src="/static/media/{{ pic.pic }} " alt="">
</body>