【问题标题】:Django Static image File Failed to load resourceDjango静态图像文件无法加载资源
【发布时间】:2016-12-30 22:41:49
【问题描述】:

已修复 这是我的解决方案,在主程序 urls.py 中我必须添加这些行。

从 django.conf 导入设置 从 django.conf.urls.static 导入静态

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

我有一个名为 Item 的模型,里面有一个图像字段。我在数据库中添加了一个带有图像的新项目,并尝试将其加载到我的索引模板中。但是,当我查看控制台时,我没有得到图像(“WEBSITENAME/site_media/items/image.jpg 404(未找到)”)

我认为问题出在 settings.py 文件中,但我无法弄清楚我到底做错了什么。

index.html 模板

{% load static %}
<div class="item" style="background-image: url('{{ item.img.url }}')">`

Model.py

class Item(models.Model):
    name = models.CharField(max_length=200)
    img = models.ImageField(upload_to='items', default='', blank=True, null=True)

    def __str__(self):
        return "%s" % (self.name)

Views.py

def index(request):
    latestItems = Item.objects.all().order_by('-id')[:3][::-1]
    return render(request, 'webshop/index.html', {'latestItems' :latestItems})

settings.py

SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
MEDIA_ROOT = os.path.join(SITE_ROOT, 'site_media/')
MEDIA_URL = 'site_media/'

【问题讨论】:

  • 我设法修复了它。我必须在主 urls.py 文件中添加这些行: from django.conf import settings from django.conf.urls.static import static urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  • 请记住,为了安全起见,您可以添加:if settings.DEBUG: urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

标签: python django django-models django-templates django-views


【解决方案1】:

在你的settings.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__))

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
STATIC_URL = '/static/'

并阅读此document

使用您显示的目录根结构,我认为上述设置应该可以工作。虽然没有测试过。让我知道它是否有效。

【讨论】:

  • 对于像我这样对 django 很陌生的人来说,理解所提供的文档是相当困难的。我尝试了代码,但不幸的是没有任何改变。我已经有了 STATIC_URL = '/static/' 顺便说一句,因为我可以很好地加载 css 文件。
  • 1.检查静态文件链接 - 将静态文件夹放入任何 css 并像这样 {{ template/css.css}} 或 {{ }} ctl + 空格进行测试,如果你链接得很好,你应该会看到任何打击
  • 2.检查项目 - 如果项目存在,{{item.anyfeilds}} 将显示在您的页面上
  • 3.检查语法 - 可能不正确 "background-image: url('{{ item.img.url }}')"
  • 所有这些都很好我从项目加载文本很好我只是没有在示例中显示它我的坏。我还从名为 appname/static/css/style.css 的文件夹中加载了一个 css 文件,语法应该没问题。数据库中的图像存储在应用程序外部,但在项目根目录中,如下所示:projectroot/site_media/items/item.jpg
【解决方案2】:

你有:

upload_to='items'

但是:

{{ item.img.url }}

应该这样吗?

{{ items.img.url }}

【讨论】:

  • upload_to='items' 是一个名为 items 的文件夹 item.img.url 是对象 item
【解决方案3】:

在 settings.py 中:

PROJECT_ROOT = os.path.abspath(os.path.dirname(__ file __))

STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, "静态"), )

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 2018-09-11
    • 2014-07-12
    • 2018-03-19
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    相关资源
    最近更新 更多