图片未加载 Django 网站

Posted

技术标签:

【中文标题】图片未加载 Django 网站【英文标题】:Images not loading Django website 【发布时间】:2017-11-30 22:09:05 【问题描述】:

我的 django 网站上的图片由于某种原因没有加载

这是我的 models.py

thumbnail = models.ImageField(upload_to='images/',blank=True)

这是我的 settings.py

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
if DEBUG:
     STATIC_ROOT = os.path.join(BASE_DIR, 'static/static-only')
     MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media')
     STATICFILES_DIRS = (
     os.path.join(BASE_DIR, 'static/static'),
     )

这是我的 views.py

class BlogIndex(generic.ListView):
    queryset = models.Entry.objects.published()
    template_name = "index.html"
    paginate_by = 5

url.py

if settings.DEBUG:
    urlpatterns +=static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

index.html 我做了这个

<img class="img-rounded" src = "object.thumbnail.url"/>

点冻结

Django==1.11.2
django-ckeditor==5.2.2
django-crispy-forms==1.6.1
django-markdown==0.8.4
django-pagedown==0.1.3
Markdown==2.6.8
olefile==0.44
Pillow==4.1.1

图像被保存在 static/media/images 目录中 但是图片没有加载到网页中...

当我尝试右键单击并查看图像时,它显示此错误SCREEN SHOT

其他对象工作正常..只有图像没有加载

【问题讨论】:

您是否处于调试模式? 是的,我处于调试模式 你是如何添加图片的?管理员? 来自 django 管理员 【参考方案1】:

您需要 src 中的媒体网址:

<img class="img-rounded" src = "object.thumbnail.url"/>

应该是:

<img class="img-rounded" src = "MEDIA_URLobject.thumbnail.url"/>

或类似的东西

<img class="img-rounded" src = "/static/media/uploads/object.thumbnail.url"/>

【讨论】:

还是一样的问题 未找到:/media/Knowledge_is_power_by_Pcbots.blogspot.com.png [29/Jun/2017 14:37:45] "GET /media/Knowledge_is_power_by_Pcbots.blogspot.com.png HTTP/1.1" 404 1807 这是命令行中的错误 您正在将图像上传到 /images ?网址中缺少该内容。所以试试 src='images/object.thumbnail.url'【参考方案2】:

问题已解决,(得到 Facebook 群组的帮助)

问题是 views.py 中的 url 模式 我放的屏幕截图有一条线

提出者:blog.views.Blogdetail

显然我有一个 urlpattern

    url(r'^(?P<slug>\S+)/$', views.BlogDetail.as_view(), name='entry_detail'),

我的博客详细视图模式匹配 \S+ - 所以任何没有空格的字符串 这将匹配几乎任何以前未匹配的模式,并且不会访问低于此特定 url 的任何其他 url 模式

将 url 模式更改为以下内容,我很高兴

url(r'^(?P<slug>[-\w]+)/$', views.BlogDetail.as_view(),name='entry_detail'),

【讨论】:

【参考方案3】:

settings.py:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

在此模型中,您可以看到现有 IMG 的覆盖,将 img 作为基本字符串返回:

models.py

from django.db import models
from django.core.files.storage import FileSystemStorage
from base64 import b64encode, b64decode

class OverwriteStorage(FileSystemStorage):

    def get_available_name(self, name, max_length=700):
        if self.exists(name):
            os.remove(os.path.join(settings.MEDIA_ROOT, name))
        return name

def upload_location(instance, filename):
    return os.path.join('defaultfolder', instance.phone, filename)


class ImgModel(models.Model):
    name= models.CharField(max_length=100)
    img = models.FileField(storage=OverwriteStorage(),
           upload_to=phone_upload_location,
           null=True,
           blank=True,
           max_length=700)

    def image_to_base64(self, model_picture_path):
        if model_picture_path:
            try:
                with open(model_picture_path.path, "rb") as imageFile:
                    str = b64encode(imageFile.read())
                return "data:image/jpg;base64,%s" % str.decode()

            except IOError:
                return model_picture_path.url
        else:
            return None

.html

<img src=" MEDIA_URL foo.jpg">

【讨论】:

【参考方案4】:

我遇到了这个问题,我尝试了很多东西,但图像无法加载,然后我尝试了一个简单的技巧,但这完成了工作。我所做的是,在我的 settings.py 文件中,我在 BASE_DIR 之后包含了 STATIC_DIR 变量。下面是我的 settings.py 文件

Settings.py

#Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR=os.path.join(BASE_DIR,'templates')
STATIC_DIR=os.path.join(BASE_DIR,"static")

#Other content

STATIC_URL = '/static/'
STATICFILES_DIRS=(
    STATIC_DIR,
)

看看这个也许会有所帮助!

【讨论】:

【参考方案5】:

如何修复图像答案是

上面提到 index.html % static 'travello/images/' as baseUrl % 路径

那么

【讨论】:

然后呢?我认为您在这里缺少部分答案〜

以上是关于图片未加载 Django 网站的主要内容,如果未能解决你的问题,请参考以下文章

React 和 Django 网站未在 Heroku 上加载

图像未加载到网站上(在 iPad 上)[关闭]

python Django1.3 建立网站,无法加载css

Favicon 未在 Django 中加载

Django 实现上传图片功能

指向外部站点的 Cordova webview 未加载图像