【问题标题】:Django not show imagesDjango不显示图像
【发布时间】:2015-03-23 19:54:43
【问题描述】:

请告诉我。为什么../static/image.jpg 显示图片,而../media/image.jpg 现在显示

需要写网址吗?需要更改设置?我不喜欢文档中的答案。

请帮忙。

2 晚搜索答案。

需要从管理面板上传照片并在模板中显示。

<img src="{{ tovar.product_img.url }}">

【问题讨论】:

    标签: python django django-media


    【解决方案1】:

    要显示图像,您需要先在模板中加载静态文件,然后再引用它们。这就是您应该在模板中显示图片的方式:

    {% load staticfiles %}
    
    <img src="{% static 'image.jpg' %}">
    

    此图像需要存储在您的静态文件夹中。 ../YourApp/YourApp/static/image.jpg 是我保存静态文件夹的地方。显然,最好在静态文件夹等中使用 images 文件夹进一步构建它。

    在您的设置文件中,您需要以下几行:

    # Static asset configuration
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    STATIC_ROOT = 'staticfiles'
    STATIC_URL = '/static/'
    
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),
    )
    

    这应该对你有用。

    【讨论】:

    • 那你为什么不把你的媒体文件夹移动到静态文件夹中或者创建一个类似的变量来引用你的媒体文件夹呢?
    【解决方案2】:

    settings.py

    MEDIA_ROOT = '/path/to/yourmediafolder/'
    MEDIA_URL = '/media/' # whatever but it should same in `urls.py`
    

    urls.py

    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve', {
        'document_root': settings.MEDIA_ROOT}))
    

    然后在template

    <img src="{{ MEDIA_URL }}images/imagename.jpg"/>
    

    注意:这里的image应该是'/path/to/yourmediafolder/images/imagename.jpg'

    完整示例:

    我有一张图片test.jpg'/home/me/test.jpg

    MEDIA_ROOT = '/home/' # or /home/me/ but change url in image src
    MEDIA_URL = '/media/'
    
    #urls.py same as above
    

    template

    <img src="{{ MEDIA_URL }}me/test.jpg"/> # or <img src="{{ MEDIA_URL }}test.jpg"/> as or condition above in MEDIA_ROOT.
    

    注意 {{ MEDIA_URL }}me ,它们之间没有/ 因为MEDIA_URL='/media/

    您可以通过以下方式进行测试:

    http://domain.com/media/me/test.jpg # or  http://domain.com/media/test.jpg as OR condition in MEDIA_ROOT
    

    在本地:

    http://localhost:8000/media/me/test.jpg #in locally
    

    【讨论】:

    • 如果我使用本地主机。 MEDIA_ROOT中的链接需要如何使用?
    • 无论如何env。将 abs 路径设置为 /var/myimages/
    • 如果我的 MEDIA_URL 是 '/media/',并且 'media' 文件夹的绝对路径是 'D:/project_django/project1/media',MEDIA_ROOT = 'D:/project_django/project1/media ' ?如果我的upload_to = 'img'(在模型中),我上传的文件会被推送到文件夹'media/img'吗?然后我可以在模板中写
    • 那么 imagename.jpg 到底是什么?它是任何 .jpg 图片的抽象名称还是我的图片的具体名称?如果我使用 ImageField 将另一张图片加载到我的 Class 的另一个对象的 ImageField 怎么办? Django 如何理解“media/img”中的哪张图片在模板中显示?每次加载新图片时我不会更改代码吗?
    • 我解释了一个如何设置 url 和 root 的例子。然后你必须注意的一件事是'只有图像名称和路径保存在数据库中'(其他也是)。所以你必须查询所有来自模型的图像名称,并且可以在 for 循环中应用它。
    【解决方案3】:

    这有效(在 html img 标签中): src="(left squiggly, percent) static poc.image.name (percent, right squiggly):

    ...感谢指出 ImageField 除了(无用)路径和(无用)url 之外还有名称的人,例如:

    >>> from nutr.models import *
    >>> poc=POC.objects.get(pk=87)
    >>> poc.name
    

    “埃德加”

    【讨论】:

    • 抱歉,它不会占用 html。
    【解决方案4】:

    Django==2.0.2 中使用{% get_media_prefix %}

    来自docs

    【讨论】:

      猜你喜欢
      • 2014-01-17
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多