我需要在我的django + mongoengine项目中从GridFS提供文件。有没有开箱即用的解决方案?如何在django开发环境中从gridfs提供文件?
1
A
回答
-1
在Django中我该如何做到这一点并不明显,但这是我最终做的。
我在views.py中创建了一个show_image函数,它传递感兴趣图像的md5并将其作为HttpResponse返回。在这种情况下,发布数据会被用户过滤,但一般情况下您可能不需要。此外,我的show_image代码效率很低,我相当肯定有办法使用mongoengine进行查询,这比通过查找md5的图像迭代效率更高。 urls.py传递图像的md5,然后调用show_image并返回标记的HttpResponse/url需求。
models.py
from mongoengine import *
class Post(Document):
image = ImageField()
views.py
@login_required
def view_posts(request):
post_data = Post.objects(user=request.user)
return render(request, 'posts.html', { 'post_data' : post_data })
@login_required
def show_image(request, _md5):
post_data = Post.objects(user=request.user)
image = None
for post in post_data:
if _md5 == post.image.md5:
image = post.image.read()
break
return HttpResponse(image, content_type="image/" + post.image.format)
urls.py
url(r'posts/images/(?P<_md5>\w+)$', 'project.views.show_image', name='show_image'),
个模板/ posts.html
<div id="posts">
{% for post in post_data %}
<dl class="dl-horizontal">
<dd>{{ post.image.uploadDate }}</dd>
<img src="images/{{ post.image.md5 }}" />
</dl>
{% endfor %}
</div>
0
@login_required DEF view_posts(请求): post_data = Post.objects(用户= request.user)
return render(request, 'posts.html', { 'post_data' : post_data })
@login_required DEF show_image(请求,_md5): post_data = Post.objects(user = request.user)
image = None
for post in post_data:
if _md5 == post.image.md5:
image = post.image.read()
break
return HttpResponse(image.read(), content_type="image/" + post.image.format)
相关问题
- 1. 从Tomcat环境中提供文件
- 2. 如何仅在开发环境中使用Sails.js来提供静态文件?
- 3. 如何在Django开发中提供静态文件
- 4. 如何在django开发服务器上提供静态文件
- 5. 如何在Linux中为java文件提供XML路径环境
- 6. 无法找出在django开发环境中提供静态图像
- 7. SimpleDB的Django开发环境
- 8. 开发环境VBP文件
- 9. 在开发环境中为静态图像提供服务
- 10. 在Django中为开发模式提供静态文件
- 11. Django:在开发环境中发送SMTP电子邮件
- 12. 资产:如何在开发环境中包含JavaScript文件?
- 13. 在共享主机环境中为Django 1.5提供静态管理文件
- 14. 使用django-allauth和Stack Exchange作为提供者,如何在我的开发环境中更改redirect_uri?
- 15. Django管道没有在开发模式下提供文件
- 16. 如何在开发中将CSS提供给Django?
- 17. rails3,gridfs和mongomapper:如何提供文件? SEND_DATA?
- 18. 如何在App Engine中为目录中的文件提供标准Python环境
- 19. 的AppEngine开发环境提供了java.lang.VerifyError的
- 20. Selenium集成开发环境集成开发环境IDE集成开发环境集成开发环境
- 21. Django开发环境设置问题
- 22. 为Django创建开发环境
- 23. 本地缓慢的django开发环境
- 24. Apache Django Mod_Wsgi会话开发环境
- 25. 的Django 1.4开发环境,有zc.buildout
- 26. 如何从文件中读取环境
- 27. Excel插件开发环境
- 28. Drupal的7 - 如何在开发环境
- 29. 如何在家建立开发环境?
- 30. Django如何提供媒体文件?
注意:这可能是修改为使用对象ID而不是可能使这更通用的md5。 – 2013-07-18 01:34:22