首页>>后端>>Python->django怎么传递图片(django 上传)

django怎么传递图片(django 上传)

时间:2023-12-12 本站 点击:0

导读:今天首席CTO笔记来给各位分享关于django怎么传递图片的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

Django 静态文件与动态文件

编辑 settings:

MEDIA_ROOT 和 MEDIA_URL 代表的是用户上传后的文件保存的地方。可以理解为存放可变文件的文件夹。

这两个参数有什么用处呢?

在 Django 的 FileField 和 ImageField 这样的 Model 类中,有 upload_to 参数可选。当 upload_to 设置相关的地址后,如例子:

文件上传后将自动保存到: os.path.join(MEDIA_ROOT, upload_to) ,在本例中就是: /static/uploads/test_pictures

而 MEDIA_URL ,则代表用户可以通过怎样的 URL 来访问这些上传后的文件资源。

在本例子中,本机地址是: , MEDIA_URL 设置为 /static/uploads/

那么通过: 文件名 就可以访问相关的上传图片或者其他文件。

STATIC_ROOT 和 STATIC_URL 则是网站中,用于网站放置的静态图片、CSS、JS 等文件的保存地址。可以理解为,保存网站运行中不会再变文件的文件夹(即不会删除或者新增)

STATIC_URL ,同 MEDIA_URL 类似;设置 STATIC_URL 为 "/static/" 时候,通过: 文件名 就可以访问相关的静态文件了。

STATIC_ROOT 是一个比较特殊的文件夹。这是 Django 的开发模式和部署模式区别最大的地方。

通常我们在开发模式下,可以在我们所在的 project 下建立相应的 app, 然后每个 app 下都建立相应的 static 文件夹。在开发模式下(Debug=True),Django 将为我们自动查找这些静态文件(每个app)并在网页上显示出来。然而,在部署模式下,Django 认为这些工作交由 web 服务器来运行会更有效率。

因此,在部署时,我们需要运行一下 :

这个命令将会把每个 app 里的 static 目录下的文件 copy 到 STATIC_ROOT 这个文件夹下。

如果在部署模式下,即: (Debug=False) 访问相关网页,如: 文件名 ,将不会访问 Django下各个 App 中的 static 文件夹,而是 STATIC_ROOT 中所指定的文件夹。

为了在部署模式下正确使用,我们还需要在 urls.py 中添加以下:

这相当于告诉 Django 碰到一个 "static" 开头的链接时,该如何处理。

了解完以上之后,我们让图片在前端显示出来。

编写一个 show 视图函数,来传递动态图片:

然后编写 show.html :

Django model.ImageFiled 图片的上传及显示

做项目中的一个坑。。

本来觉得在model里面定义了ImageFiled,能简化MySQL存取图片。事实上在读取静态图片的时候确实很方便,只需要相对路径正确即可。

eg:

但是当需要读取到用户自己上传的图片的时候,路径的问题就暴露出来了。

这个随便写写就好了

明明路径是对的,然鹅,Django觉得这个路径可能是别人家的

试试把这个路径静态了

呵,图片能够显示了。

于是继续满心欢喜地用到了正在进行的项目中

貌似有的地方还是不能用

图片也是路径诶,所以试着在urls.py加上一个匹配。

在许多博客里也找到了类似的操作,Django document中也有类似的说法

加入了类似的匹配之后

又能使用了。。为了避免白高兴一场,在自己的项目里面加入试一下

django上传图片并且带有预览功能

就用uploadfy呗,JS中在返回成功之后你自己在HTML中写个img标签,把返回的URL丢到IMG里不就完了,我们也用这个插件,还不错

django mongoengine FileField 上传图片问题,很急,高悬赏在线等,解决追加!

django上传图片:

from PIL import Image

def UploadImage(request):

if request.method == 'POST':

content = request.FILES['ImageField']

try:

img = Image.open(content)

#img.thumbnail((500,500),Image.ANTIALIAS)#对图片进行等比缩放

img.save("abv.png","jpg")#保存图片

except Exception,e:

return HttpResponse("Error %s"%e)

return HttpResponse("ok")

return HttpResponse("error")

测试html:

body

div class="file-box"

form action="" method="post" enctype="multipart/form-data"

input type='text' name='textfield' id='textfield' class='txt' /

input type="file" name="ImageField" class="file" id="ImageField" size="28" onchange="document.getElementById('textfield').value=this.value" /

input type="submit" name="submit" class="btn" value="upload" /

/form

/div

/body

Django REST framework编写图片上传接口并测试

在做接口自动化时,有时会遇到图片上传的接口,这时Content-Type就不是application/json。

这里使用DRF编写一个图片上传接口,并测试。

一、编写图片上传接口

首先创建一个我们希望用来存放文件的文件夹,并且在settings.py中配置路径:

在项目的urls.py中配置media的路由:

在应用的models.py中创建模型:

并且在serializers.py中创建序列化:

编写视图views.py:

给应用的urls.py配置路由:

最后我们测试一下:

结语:以上就是首席CTO笔记为大家整理的关于django怎么传递图片的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/28118.html