当前位置: 首页 > 知识库问答 >
问题:

django不显示图像

方博
2023-03-14

我从django应用程序开始,并尝试在主页中显示图像。但是图像没有被显示。

我的settings.py:

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

我的网址.py:

urlpatterns = patterns('',
# Examples:
# url(r'^$', 'myapp.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),

url(r'^admin/', include(admin.site.urls)),
url(r'',include('users.urls')),
) 

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

我的home.html:

<html>
    <head>
            <title>MY SITE</title>
    </head>
    <body>
            <img src="/media/image/myimage.jpg" alt="my image"/>
            Welcome to my site
    </body> 
</html>

我得到文本我的图像显示而不是图像

共有3个答案

云焱
2023-03-14

我建议您设置DEBUG=TEMPLATE_DEBUG=True并直接请求图像URL。

您将得到Django调试输出,要么显示URL不匹配,要么显示它实际寻找的文件路径。

这些设置看起来基本上是正确的,尽管您没有共享BASE_DIR,这在本例中很重要。

强化
2023-03-14

您在列表中添加媒体URL的时间太晚。Django将尝试连续匹配每个< code>urlpattern,当它到达第一个时停止。在这种情况下,它在< code>r''上匹配,并且不到达静态文件或媒体URL。

您可以将每个模式放在对 patterns() 的单个调用中,而不是使用 =。这将是最干净的,但我不能在这里测试它。一个确定的方法是将“users.urls”行拉出并在以后添加它,如下所示:

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
) 

urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += url(r'',include('users.urls'))
马和硕
2023-03-14

好的,所以我建立了一个简单的“配对”工作示例,这样就不会丢失移动部分。一些注释:

  • 我用的是django 1.6
  • 如果您想使用可缩放的静态图像交付,您需要遵循本示例提供的django-1.6静态文件留档。

这意味着您需要破解并刷新您的MEDIA引用。(MEDIA实际上是用于文件上传的),您不需要在URL中愚弄staticfiles_urlpatterns。py文件。当您在添加“django.contrib”时,就可以摆脱这种行为。staticfiles”设置为您的设置.py

概述:这是django 1.6中你的文件树布局的样子,以及我在这个回答中提到的文件结构。

├── djproj
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── wsgi.py
├── manage.py
└─── myapp
    ├── admin.py
    ├── __init__.py
    ├── models.py
    ├── static
    │   └── myapp
    │       └── myimage.jpg
    ├── templates
    │   └── index.html
    ├── tests.py
    └── views.py

步骤1:确保django.contrib。静态文件包含在INSTALLED_APPS中。

第2步:在您的设置文件中,定义STATIC_URL,例如:

STATIC_URL = '/static/'

第三步:换个家。html如下所示(我在示例中使用了index.html)

[ PROJECT_HOME/我的应用/模板/索引.html ]

<html>
<head>
        <title>MY SITE</title>
</head>
<body>
    {% load staticfiles %}
    <img src="{% static "myapp/myimage.jpg" %}" alt="My image"/>
        Welcome to my site
</body> 
</html>

请务必阅读与STATICFILES_STORAGE相关的django-1.6 staticfiles文档,以便理解这些模板标签给你带来了什么。提示:< code > python manage . py collect static

步骤4:(您可能已经这样做了,但我没有看到)确保在您的设置中定义了TEMPLETE_DIRS。py,包括您的家。html(这里的关键是django的模板引擎需要提供此服务,因为我们将使用一些模板标记)

[PROJECT_HOME/djproj/settings.py]

TEMPLATE_DIRS = (
   # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
   # Always use forward slashes, even on Windows.
   # Don't forget to use absolute paths, not relative paths.
   BASE_DIR + '../myapp/templates',
)

第五步:构建一个呈现你家的视图。html页面。

[PROJECT_HOME/myapp/views.py]

from django.shortcuts import render_to_response

def index( request ):
   return render_to_response('index.html')

由于这有点复杂,这里有几个移动的部分:这是一个显示完整“更改”的变更集

如果其中任何一个令人困惑,你可以粗略地拉动整个github项目。django-staticfiles-setup示例

最后注意:静态文件在django中并不总是以这种方式处理。媒体目录曾经是你所追求的设置。所以这个答案是针对Django 1.6的(静态文件是在django版本1.3中添加的)(目录布局在django 1.5中发生了变化)。

您可以(正如您试图做的那样)将您的媒体目录硬连接到STATIC定义。尽管如此,我不推荐这样做。这就是为什么我没有描述如何这样做。

 类似资料:
  • 问题内容: 虽然我可以在list_display中显示上载的图像,但是是否可以在每个模型页面上执行此操作(就像在更改模型时获得的页面一样)? 快速样本模型为: 默认管理员显示上传图像的URL,但不显示图像本身。 问题答案: 当然。在模型类中,添加类似以下方法: 并在你的添加: 给你。如果要限制编辑图像字段的能力,请确保将其添加到exclude属性。 注意:仅在readonly_fields中使用D

  • 我尝试了一切,但图像不会显示,我试图缩小图像,但没有用,我试图改变路径,我试图更改图像的位置,但没有帮助,我试图在互联网上搜索,但什么都没有。 我看到的只是空白的图形用户界面,没有文本和图像。如果你能帮我,你会帮我一个大忙。 代码如下:

  • 我正在使用此代码显示图像 图片存在于storage\app\public\images上,但它没有显示在我的页面上,顺便说一句,我已经创建了php artisan storage:link

  • 我已经制作了Hello World RCP应用程序,得到了以下类结构: 向Perspective.createInitialLayout()添加额外代码: 但不显示视图。 我将breakpoint设置到perspective.createInitialLayout()中,发现它没有执行。 我的观点声明是: ApplicationWorkbenchAdvisor.GetInitialWindowPe

  • 问题内容: 我只是开始使用django,而且我还没有找到有关如何显示imageField的很多信息,所以我做到了: models.py views.py image.html 我已经保存了图像,因为终端,我知道在那里,如果在image.html中这样做: 输出是:Car object 谁能告诉我我的错误在哪里? 问题答案: 一个包含一个属性,你可以在你的模板用来呈现适当的HTML。

  • 问题内容: 我定义了一个包含链接图像的模型。有没有办法在模型项目列表中显示图像?我的模型如下所示: 有没有办法显示图像和标题? 问题答案: 你可以使用其他名称创建模型实例方法,允许HTML标签为其输出,并将此方法添加为列表字段。这是一个例子: 首先添加一个新方法,返回包含图像的HTML: 然后将此方法添加到列表中: