2016-08-23 114 views
1

固定 这是我的解决方案,在主要程序urls.py我不得不添加这些行。Django静态图像文件无法加载资源

从django.conf.urls.static进口静态

URL模式+ =静态(settings.MEDIA_URL,DOCUMENT_ROOT = settings.MEDIA_ROOT)

我有一个名为模型项目django.conf导入设置

在那里我有一个形象领域。我向数据库添加了一个带有图像的新项目,并尝试将其加载到我的索引模板中。但我没有得到一个图像,当我看着它所说的控制台(“WEBSITENAME/site_media/items/image.jpg 404(Not Found)”)

我认为问题在于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/' 
+0

我设法解决它。我必须在主urls.py文件中添加这些行:从django.conf导入设置 from django.conf.urls.static import static urlpatterns + = static(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT) – DjangoPleb1234

+0

请记住,为了安全起见,您可以添加: '如果settings.DEBUG: URL模式+ =静态(settings.STATIC_URL,DOCUMENT_ROOT = settings.STATIC_ROOT) URL模式+ =静态(settings.MEDIA_URL,DOCUMENT_ROOT =设置。 MEDIA_ROOT)' – Jon

回答

0

在你settings.py

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

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

和阅读本document

用已经显示的根目录结构,我觉得上面的设置应该工作。还没有测试过它。让我知道它是否有效。

+0

了解提供的文档对于像我这样的django相当陌生的人来说是相当困难的。我尝试了代码,但不幸的是没有任何改变。我已经有STATIC_URL ='/静态/'顺便说一句,因为我可以很好地加载一个CSS文件。 – DjangoPleb1234

+0

1。检查静态文件链接 - 把静态文件夹任何CSS和测试像这样{{template/css.css}}或{{}} ctl +空间你应该看到任何打击,如果你呃链接很好 –

+0

2.检查项目 - 如果项目存在,您的页面上显示{{item.anyfeilds}} –

0

您有:

upload_to='items' 

但:

{{ item.img.url }} 

会这样?

{{ items.img.url }} 
+0

upload_to ='items'是一个名为items的文件夹item.img.url是对象项目 – DjangoPleb1234