Python 来自Django don的ImageField的图像';不加载模板

Python 来自Django don的ImageField的图像';不加载模板,python,django,image,django-templates,django-models,Python,Django,Image,Django Templates,Django Models,我正在本地机器上使用Django(1.5.1)构建一个图库。在我的相册模型中,我有一个ImageField。有一个视图可以显示相册的所有图像。它工作得很好,但最后图像不会显示出来。可以看到图像的边界,但图像不会加载 截图 models.py views.py detail.html 我的媒体根目录拥有777权限 我现在该怎么办?问题出在哪里?检查您的设置。py您已经定义了MEDIA\u ROOT和“MEDIA\u URL”(它们是正确的)。介质根目录指定计算机上存储介质的绝对文件夹 举个例子:

我正在本地机器上使用Django(1.5.1)构建一个图库。在我的相册模型中,我有一个
ImageField
。有一个视图可以显示相册的所有图像。它工作得很好,但最后图像不会显示出来。可以看到图像的边界,但图像不会加载

截图

models.py views.py detail.html 我的媒体根目录拥有777权限


我现在该怎么办?问题出在哪里?

检查您的设置。py您已经定义了
MEDIA\u ROOT
和“MEDIA\u URL”(它们是正确的)。介质根目录指定计算机上存储介质的绝对文件夹

举个例子:

MEDIA_ROOT = '/myfolder/'
这意味着它将在以下位置查找图像:

/myfolder/images/albums/
接下来在您的设置.py中检查您的
MEDIA\u ROOT
位置:即

MEDIA_URL = 'http://localhost/myfolder/'
因此,您的图像:

<img src="{{ MEDIA_URL }}{{ image.image.url }}" height="420"></a>

希望这对您有所帮助。

如果您使用的是开发服务器,则需要在URL.py中添加一些内容,以使django为媒体文件提供服务,cf:

1.4.x:
1.5.x:

我有一个关于问题所在的线索<代码>媒体\u URL应如下所示:

MEDIA_ROOT='<the full path to your media folder>' (i.e: '/home/ike/project/media/')
MEDIA_URL='/media/'
您可以查看以下文档:

希望这对您的详细信息有所帮助。html,更改您的

img src="{{ image.image.url }}" height="420"

我希望这有帮助。如果没有,我很乐意提供更多细节。

来源:


您需要添加到url模式以提供上传的文件

我从上面的每个答案中提取了一点。我和你有同样的问题。我从当前的/blog/post/(media_url)/image.jpg获得了直接的回报

在我的管理门户中,我可以轻松查看和编辑它。但是在我的post.html上,我遇到了一些问题,直到我添加了{{MEDIA_URL}}--

这就是我所错过的一切

我把我的整个部分贴在下面,这样其他人就可以阅读并看到他们遗漏了什么

post.html:

    <label for="id_image">  <img src="{{ MEDIA_URL }}{{ p.image.url }}" 
    title="{{ p.title }}"> </label>

models.py:

    from django.core.files.storage import FileSystemStorage

    upload_location =
    FileSystemStorage(location='/home/pi/djcode/xpcpro/xpcpro/images')

    class Blog(models.Model):
        title = models.CharField(max_length=255)
        author = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
        date = models.DateTimeField(auto_now=False, auto_now_add=True)
        body = models.TextField()
        image = models.ImageField(
            storage=upload_location, null=True,
            blank=True, width_field="width_field",
            height_field="height_field",)
        height_field = models.IntegerField(default=0)
        width_field = models.IntegerField(default=0)

urls.py:

    from django.conf.urls.static import static
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns

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

settings.py:

    MEDIA_ROOT = "/home/pi/djcode/xpcpro/xpcpro/images/"
    MEDIA_URL = "/images/"
post.html:
models.py:
从django.core.files.storage导入文件系统存储
上传位置=
文件系统存储(位置='/home/pi/djcode/xpcpro/xpcpro/images')
类博客(models.Model):
title=models.CharField(最大长度=255)
author=models.ForeignKey(settings.AUTH\u USER\u MODEL,默认值=1)
date=models.DateTimeField(auto\u now=False,auto\u now\u add=True)
body=models.TextField()
image=models.ImageField(
存储=上传位置,空=真,
blank=True,width\u field=“width\u field”,
高度\字段=“高度\字段”,)
高度\字段=models.IntegerField(默认值=0)
宽度\字段=models.IntegerField(默认值=0)
URL.py:
从django.conf.url.static导入静态
从django.contrib.staticfiles.url导入staticfiles\u urlpatterns
urlpatterns+=静态文件\u urlpatterns()
urlpatterns+=静态(settings.MEDIA\u URL,
document\u root=settings.MEDIA\u root)
settings.py:
MEDIA_ROOT=“/home/pi/djcode/xpcpro/xpcpro/images/”
媒体URL=“/images/”

我知道这个问题很老,但在证明所有选项后,我立即解决了它:

  • settings.py:
  • 媒体URL='/MEDIA/' MEDIA\u ROOT=os.path.join(基本目录'MEDIA')
  • 危险!!!这里我的一个错误是我使用了我的应用程序/url.py。。。如果要使用my_app/urls.py,需要将“/namespace_name{{{{{image.image.url}}}”添加到img'src:
  • 从django.conf.url.static导入静态 从django.contrib.staticfiles.url导入staticfiles\u urlpatterns 从django.conf导入设置 urlpatterns+=静态文件\u urlpatterns() urlpatterns+=静态(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)
  • 您的模板detail.html
  • img src=“{image.image.url}}”alt=“{{image.title}” 注: 您不需要媒体URL,请小心使用“/”,因为image.image.URL是绝对的,因此如果使用名称空间,则不需要添加完成斜杠

    img src="/namespace_name/{{ image.image.url }}" --> BAD!!! img src="/namescape_name{{ image.image.url }}" --> GOOD!!! img src=“/namespace\u name/{{image.image.url}}”-->不好!!! img src=“/namescape_name{{{image.image.url}”-->很好!!!
    图像url更改为:当我更改媒体url并将其添加到src时。但当媒体URL=''时,一切正常。所以它没有解决问题。媒体URL必须是指向同一目录路径的URL。使用URL属性时,{MEDIA\u URL}}是不必要的,因为它会自动附加MEDIA\u URL,但您确实需要设置一个{{MEDIA\u URL}},否则您的图像将不会显示!在请求映像时,服务器似乎会返回一个Not Found响应。你能在浏览器中检查图像元素并发布图像
    src
    属性中的地址吗?编辑了我的问题,提供了关于URL和根设置的更多信息。这很奇怪,应该是
    /media/images/albums/photo_4.jpg
    。尝试在浏览器中手动键入此地址
    http://localhost:8000/media/images/albums/photo_4.jpg
    并查看它是否显示图像。那应该是正确的地址。同样在代码中,在url前面用斜线字符像这样写
    标记。好的,看看这是否管用。url不显示图像。我得到404错误。但img标签中的“/”是个好主意。URL似乎是正确的。但静止图像无法加载。你试过我的答案吗
    MEDIA\u ROOT='/MEDIA/'
    @Sheshkovsky:帮你自己一个忙,去看看这些链接。我得到一个错误,因为静态文件没有定义。有什么想法吗?@AswinMurugesh:在你的
    url.py
    中添加这一行:
    来自django.contrib.staticfiles.url导入staticfiles\u urlpatterns
    我得到的是“name”static“没有定义”@AnselZandegran添加这一行:
    来自django.contrib.staticfiles.url导入static
    我认为硬编码静态url不是个好主意。为什么不加载静态模板标记
    {%load static%}
    或使用
    {{static\u URL}}
    http://localhost/myfolder/images/albums/
    
    MEDIA_ROOT='<the full path to your media folder>' (i.e: '/home/ike/project/media/')
    MEDIA_URL='/media/'
    
    # You might need to import static function like this:
    #from django.contrib.staticfiles.urls import static
    
    urlpatterns += staticfiles_urlpatterns()
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
    img src="{{ image.image.url }}" height="420"
    
    img src="your_app/media/{{ image.image.url }}" height="420"
    
     from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns = [
        # ... the rest of your URLconf goes here ...
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
    post.html:
    
        <label for="id_image">  <img src="{{ MEDIA_URL }}{{ p.image.url }}" 
        title="{{ p.title }}"> </label>
    
    models.py:
    
        from django.core.files.storage import FileSystemStorage
    
        upload_location =
        FileSystemStorage(location='/home/pi/djcode/xpcpro/xpcpro/images')
    
        class Blog(models.Model):
            title = models.CharField(max_length=255)
            author = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
            date = models.DateTimeField(auto_now=False, auto_now_add=True)
            body = models.TextField()
            image = models.ImageField(
                storage=upload_location, null=True,
                blank=True, width_field="width_field",
                height_field="height_field",)
            height_field = models.IntegerField(default=0)
            width_field = models.IntegerField(default=0)
    
    urls.py:
    
        from django.conf.urls.static import static
        from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    
        urlpatterns += staticfiles_urlpatterns()
        urlpatterns += static(settings.MEDIA_URL,
        document_root=settings.MEDIA_ROOT)
    
    settings.py:
    
        MEDIA_ROOT = "/home/pi/djcode/xpcpro/xpcpro/images/"
        MEDIA_URL = "/images/"
    
    MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') from django.conf.urls.static import static from django.contrib.staticfiles.urls import staticfiles_urlpatterns from django.conf import settings urlpatterns += staticfiles_urlpatterns() urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) img src="{{ image.image.url }}" alt="{{ image.title }}" img src="/namespace_name/{{ image.image.url }}" --> BAD!!! img src="/namescape_name{{ image.image.url }}" --> GOOD!!!