Python can';我不知道如何在django开发环境中提供静态映像
我读过(和其他一些相关的文章),但仍然不知道如何显示图像,除非指向web服务上存在的文件的链接硬编码到html模板中 我在URL.py中找到了: 在settings.py中,我有: 在文件系统中有一个文件C:/siteURL/gallers/landscales/160.jpg,我在 无论我在URL.py-MEDIA_ROOT或MEDIA_URL中使用什么(期望本地图像或来自web服务器),我在浏览器的源代码中都会看到以下内容:Python can';我不知道如何在django开发环境中提供静态映像,python,django,image,Python,Django,Image,我读过(和其他一些相关的文章),但仍然不知道如何显示图像,除非指向web服务上存在的文件的链接硬编码到html模板中 我在URL.py中找到了: 在settings.py中,我有: 在文件系统中有一个文件C:/siteURL/gallers/landscales/160.jpg,我在 无论我在URL.py-MEDIA_ROOT或MEDIA_URL中使用什么(期望本地图像或来自web服务器),我在浏览器的源代码中都会看到以下内容: <li><img src=160.jpg /&g
<li><img src=160.jpg /></li>
浏览器中没有显示图像
我做错了什么?这辆车看起来有问题……:
r'^galleries/(landscapes)/(?P<path>.jpg)$'
…?这是一篇很长的文章,基本上总结了我所学到的关于Django的所有知识,以便让静态文件正常工作(我花了一段时间才理解所有不同部分是如何组合在一起的) 要在开发服务器(以及以后的真实服务器)中提供静态映像,您需要做一些事情(特别注意第三步和第四步): 设置媒体根目录 MEDIA_ROOT是一个常数,它告诉Django文件(在文件系统上)的物理路径。使用您的示例,需要将MEDIA_ROOT设置为“C:/siteURL/galleries/”,如您所述。MEDIA_ROOT将用于以下步骤之一,这就是我们设置它的原因 设置媒体\u URL 媒体URL是图像所在的“URL”。换句话说,无论何时您想要获取图像,要查找的url都以MEDIA_url开头。通常这是而不是以“http”开头,因为您是从自己的服务器提供服务的(我的媒体URL通常设置为“/site\u MEDIA/”,意思是从根域开始,然后转到site\u MEDIA等) 使用媒体\u URL 媒体URL不是魔术,你必须使用它。例如,当您编写获取文件的HTML时,它需要如下所示:
<li><img src="{{MEDIA_URL}}/160.jpg" /></li>
请注意,这是如何使用url“site\u media/*”(实际上是我的媒体url)并从我的媒体根文件夹(即媒体根设置的作用所在)提供服务的
最后一个音符
让我困惑的是这里的很多东西都是为了方便。例如,MEDIA_ROOT仅在调试url模式中使用,用于告诉Django从何处加载。而MEDIA_URL只是为了鼓励您不要在所有HTML文件中添加绝对URL,因为当您决定将文件移动到其他服务器时,您必须手动更改所有文件(而不仅仅是更改MEDIA_URL常量)
当然,这一切都不是必需的:您可以使用自己的文件夹硬编码调试url模式,确保静态文件确实是url服务器上的文件(通过在浏览器中访问),然后在不使用媒体url设置的情况下将其手动编码到HTML文件中,只是为了确保事情顺利进行。将此作为前面两个答案的交叉,这两个答案都是好的。首先,正如Alex指出的,您的正则表达式是不正确的。我建议将其设置为:
(r'^local_media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}), # static content
然后我将resp字典传递给我渲染的每个模板。现在,我可以将这些相同的img标记编写为:
<img src={{MEDIA_URL}}160.jpg />
最重要的是,这部分代码也可以在生产中使用(不是正则表达式,只是媒体URL位)。最好是
(?p.+\(jpg | png | gif))
,您可能需要考虑使用它。
r'^galleries/(landscapes)/(?P<path>.jpg)$'
r'^galleries/(landscapes)/(?P<path>.*jpg)$'
<li><img src="{{MEDIA_URL}}/160.jpg" /></li>
if settings.DEBUG:
# Serve static files in debug.
urlpatterns += patterns('',
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT,
'show_indexes' : True}),
)
(r'^local_media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}), # static content
<img src=160.jpg />
<img src=[YOUR MEDIA_URL]160.jpg />
from django.conf import settings
resp = {}
resp['MEDIA_URL'] = settings.MEDIA_URL
<img src={{MEDIA_URL}}160.jpg />