Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在django开发环境中从gridfs服务文件?_Django_Mongoengine_Gridfs - Fatal编程技术网

如何在django开发环境中从gridfs服务文件?

如何在django开发环境中从gridfs服务文件?,django,mongoengine,gridfs,Django,Mongoengine,Gridfs,我需要在django+mongoengine项目中提供来自GridFS的文件。有现成的解决方案吗?我在Django应该怎么做还不是很清楚,但我最后做的就是这样 我在views.py中创建了一个show_image函数,该函数被传递给感兴趣图像的md5,并作为HttpResponse返回。在这种情况下,post数据由用户过滤,但通常您可能不需要这样做。另外,我的show_图像代码效率很低,我相当确定有一种方法可以使用mongoengine进行查询,这比在图像中迭代查找md5更有效。py传递图像的m

我需要在django+mongoengine项目中提供来自GridFS的文件。有现成的解决方案吗?

我在Django应该怎么做还不是很清楚,但我最后做的就是这样

我在views.py中创建了一个show_image函数,该函数被传递给感兴趣图像的md5,并作为HttpResponse返回。在这种情况下,post数据由用户过滤,但通常您可能不需要这样做。另外,我的show_图像代码效率很低,我相当确定有一种方法可以使用mongoengine进行查询,这比在图像中迭代查找md5更有效。py传递图像的md5,然后调用show_image并返回标记所需的HttpResponse/url

型号.py

from mongoengine import *

class Post(Document):
    image = ImageField()
@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)
    url(r'posts/images/(?P<_md5>\w+)$', 'project.views.show_image', name='show_image'),
视图.py

from mongoengine import *

class Post(Document):
    image = ImageField()
@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)
    url(r'posts/images/(?P<_md5>\w+)$', 'project.views.show_image', name='show_image'),
url.py

from mongoengine import *

class Post(Document):
    image = ImageField()
@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)
    url(r'posts/images/(?P<_md5>\w+)$', 'project.views.show_image', name='show_image'),
url(r'posts/images/(?P\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>

{post_数据%中的post的百分比}
{{post.image.uploadDate}
{%endfor%}
@需要登录\u def view_POST(请求): post_data=post.objects(用户=request.user)

@需要登录 def显示图像(请求,md5): post_data=post.objects(用户=request.user)


注意:这可以修改为使用对象Id而不是md5,这可能使其更通用。