Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
Python can';我不知道如何在django开发环境中提供静态映像_Python_Django_Image - Fatal编程技术网

Python can';我不知道如何在django开发环境中提供静态映像

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

我读过(和其他一些相关的文章),但仍然不知道如何显示图像,除非指向web服务上存在的文件的链接硬编码到html模板中

我在URL.py中找到了:

在settings.py中,我有:

在文件系统中有一个文件C:/siteURL/gallers/landscales/160.jpg,我在

无论我在URL.py-MEDIA_ROOT或MEDIA_URL中使用什么(期望本地图像或来自web服务器),我在浏览器的源代码中都会看到以下内容:

<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 />