导读:今天首席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怎么传递图片的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~