静态图片的上传和显示

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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容