Ram*_*hum 21 python django static-media
我读了这篇关于在开发过程中使用Django提供静态媒体的指南.
我注意到了,MEDIA_URL
并MEDIA_ROOT
没有在这里使用.为什么?有什么不同?
我试着做MEDIA_URL
和MEDIA_ROOT
,并得到了奇怪的结果.
Fro*_*kys 28
在生产环境中,您需要从前端Web服务器(Apache,Nginx等)提供媒体,以避免对Django/Python进程造成额外负担.MEDIA_URL和MEDIA_ROOT通常用于此目的.
运行内置的开发服务器,您需要在url.py文件中设置正确的URL - 我通常使用这样的东西:
from django.conf import settings
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
)
Run Code Online (Sandbox Code Playgroud)
从您的设置文件中选择MEDIA_ROOT意味着它适用于开发和实时.
jat*_*ism 21
直接来自settings.py中的评论......
这MEDIA_ROOT
是保存媒体的目录的绝对路径,例如/home/media/media.lawrence.com/
.
这MEDIA_URL
是处理从中提供的媒体的URL MEDIA_ROOT
.如果存在路径组件,请确保使用尾部斜杠(在其他情况下是可选的).示例:" http://media.lawrence.com "," http://example.com/media/ ".
因此,重新编写那些... MEDIA_ROOT
文件在系统中实际存在的位置,以及MEDIA_URL
这些文件映射到的位置.在开发过程中,这可能并不总是可访问的,并且在大多数情况下,您的开发环境和生产环境不一样,而且您将不得不返回并进行更改.另一件事是,当Django被设计为不为您提供静态内容时,它并不是一个好的做法.
如果您打算在开发中使用它,我建议您使用将其限制为DEBUG = True的方法.告诉Django在开发时从临时位置提供静态内容,当DEBUG
设置为True
更好,更安全的做法时.您不打算将您的网站投入生产DEBUG
,对吗?好吧,至少你不应该.
这是我实现它的方式:
settings.py:
STATIC_DOC_ROOT = os.path.join(os.getcwd(), 'site_media')
Run Code Online (Sandbox Code Playgroud)
urls.py:
from django.conf import settings
## debug stuff to serve static media
if settings.DEBUG:
urlpatterns += patterns('',
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.STATIC_DOC_ROOT}),
)
Run Code Online (Sandbox Code Playgroud)
这样我正在处理的任何项目都有一个site_media
目录,里面有所有必要的媒体.在开发中,它是独立的,我不必在设置中翻转任何位,除了DEBUG
,无论如何我都会这样做.
rob*_*ach 11
Django文档推荐我为我的用例修改了以下方法:
urlpatterns = [
# url patterns
]
from django.conf import settings
if settings.DEBUG:
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
注:上述假设你将自己
MEDIA_URL
和MEDIA_ROOT
正确
......这是djangodocs linkslap.
归档时间: |
|
查看次数: |
13201 次 |
最近记录: |