【问题标题】:Acces image in folder without django collectstatic在没有 django collectstatic 的情况下访问文件夹中的图像
【发布时间】:2015-02-09 22:16:08
【问题描述】:

我有一个 django web 应用程序,它创建调用外部 python 脚本的屏幕截图。

但我很担心,因为每次运行脚本时,我都会创建一个./manage collectstatic 来查看我的应用程序的屏幕截图。很快我就可以同时运行很多 collectstatic 了,这似乎很糟糕。

我怎样才能有一个文件夹来放置屏幕,然后用 django 访问它,而不必将它作为静态文件加载?

我目前的项目如下:

mysite
├── static
│   └── screenshots
|       └── *.png
└── crowlers
    ├── wrapper.py
    └── screenshot_robot.py

/opt/scripts/my_script.sh # launch wrapper.py and collectstatic

wrapper.py 在静态/屏幕截图中为我的./manage collectstatic 创建 .png 以获取它们。

根据第一个答案进行编辑:

我终于在我的 django 项目的根目录下创建了一个媒体目录

settings.py 中添加以下内容:

MEDIA_ROOT = os.path.join(BASE_DIR, "media")

MEDIA_URL = '/media/'

urls.py 中(使其在处于开发状态时与 DEBUG=True 一起工作):

from django.conf import settings
## debug stuff to serve static media
if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve',  {'document_root':    settings.MEDIA_ROOT}),

【问题讨论】:

  • 我觉得把你的截图放到MEDIA_ROOT更有意义。
  • 我似乎确实需要这个。 MEDIA_ROOT 默认可用,还是我必须编辑 mysite 设置?我应该在我的模板中包含什么,例如{% load staticfiles %}
  • 我找到了docs.djangoproject.com/en/dev/ref/settings/#media-url 我会确认它是否适用于我的情况
  • 我认为documentation 中已经涵盖了很多内容;据我所知,聋哑人通常已经足够好了。

标签: python django backend


【解决方案1】:

static 文件用于您的项目资产 - css、js、图像等 - IOW 项目本身的一部分,您希望保留在 git/mercurial/whatever scc 中。上传/动态/生成的内容应该放在 medias 文件夹 (settings.MEDIA_ROOT)。

【讨论】:

  • 作为一个子问题:显然我的屏幕应该是只读的,默认 MEDIA_ROOT 是否安全?
  • “只读”是什么意思? MEDIA_ROOT 文件夹只是一个文件夹,就像 STATIC_ROOT 一样,它没有任何区别。 wrt/ 访问限制,这是系统设置的事情。
  • 好吧,我的错。无论如何,我将MEDIA_ROOT = '[django_root]/media/MEDIA_URL = '/media/' 放入设置中,重新启动了开发服务器,但&lt;img src="/media/screenshots/my_image.png"&gt; 没有显示图像。图像位于正确的文件夹[django_root]/media/screenshots/my_image.png 和正确的名称顺便说一句。在我的模板中我有&lt;img src="{{ MEDIA_URL }}screenshots/{{ test.screenshot }}"&gt;
  • 目录也有很好的权利drwxrwxr-x 3 [me] [me] 4096 déc. 11 13:43 media我可以找到我做错了什么
  • 基于this answer 可以将url(r'^media/(?P&lt;path&gt;.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}) 添加到urls.py
猜你喜欢
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-01
  • 2013-12-13
  • 1970-01-01
  • 2012-07-25
  • 2010-11-23
相关资源
最近更新 更多