在Django App中显示本地图像

时间:2016-11-27 21:43:59

标签: html django image templates

是否可以显示本地存储在django应用程序中的图像?我目前正在构建一个与Web服务集成的工作流程,并且我已动态分析用户上载的数据,然后在本地处理并在本地保存(即不在静态目录中)。我目前正在努力构建一些最低限度可行的东西,然后才能使它成为正确的#34;正式正确的#34; (我知道我应该将我想要显示的图像存储在静态目录中,但由于它们不是静态的,因此用户可以上传和删除已处理的图像对我来说没有多大意义。数据因此它并不总是必然存在;工作流程目前是Web服务的外部,因此集成它们是我希望在产品工作之后可以实现的,因为集成本身可能需要几个几个月,我需要一些最低限度的工作之前的演示)。我想要显示本地存储的图像(它们是在用户上传数据后的工作流程中创建的),当生成模板化HTML时,我期望的路径实际显示(即,在浏览和查看时HTML,显示的路径是图像在我的计算机上本地的路径)但是,Django传递了以下错误:

Not Found: /local/path/to/analysis/analysisdirs/img.png

当我尝试在本地打开图像时,它们显示得很好(所以它们确实存在)。有没有办法动态添加图像,这样django只能为正在显示的特定渲染找到它们(即,一旦分析了一批文件,它就会暂时将它们添加到静态路径中,然后如果这批文件被删除则将它们删除文件被删除)?

当我转到应该显示图像的页面时,只有一个空白区域用于替换文本的图像,当我查看html时,它显示:

<img src="/local/path/to/analysis/analysis_dirs/img.png" alt="My Image" height="600" width="700">

这正是我所期待的,但显然是错误的。

我在settings.py中有以下内容:

STATIC_URL = '/local/'

# the directory to place all uploaded graphs and outputs
SERVER_DIR = "/local/"

MEDIA_ROOT = os.path.join(SERVER_DIR, 'input_data')
MEDIA_URL = os.path.join(SERVER_DIR, 'input_data/')

OUTPUT_DIR = os.path.join(SERVER_DIR, 'path/')
DATA_FOLDER = os.path.join(SERVER_DIR, "path")

我希望能做到这一点,但唉不会:(

所以我希望的是,当我打电话时:

context = {'img': '/local/path/to/analysis/analysis_dirs/img.png'}
render(request, 'myapp/mytemplate.html', context)

template.html有:

<img src="{{ img }}" alt="My Image" height="600" width="700">

我可以做类似的事情:

static_media_path += '/local/path/to/analysis/'

运行特定分析时,然后删除特定分析时:

static_media_path -= '/local/path/to/analysis/'

1 个答案:

答案 0 :(得分:1)

我猜你在调试模式下在本地机器上进行开发,是否添加了

from django.conf import settings
from django.views.static import serve

#at the end of file
if settings.DEBUG:
    urlpatterns += [
        url(r'^/local/path/to/analysis/(?P<path>.*)$', serve, {
            'document_root': settings.MEDIA_ROOT,
        }),
    ]

到您的应用urls.py