Django - 显示包含静态文件的图像

时间:2016-07-20 13:41:28

标签: python html django image

我的项目中存在“静态文件”的问题 我想简单地加载一张图片。 这是我的代码:

views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader

# Create your views here.

def D3(request):
        template = loader.get_template('appli1/D3.html')
        context = {}
        return HttpResponse(template.render(context, request))

urls.py

from django.conf.urls import url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
 
from . import views
 
urlpatterns = [
    url(r'^D3$', views.D3, name='D3'),
]

D3.html

<!DOCTYPE html>
<html>
<head>
</head>
<body>
    {% load staticfiles %}
    <img src="{% static "appli1/testimg.png" %}" alt="My image"/>
</body>
</html>

settings.py

STATIC_URL = '/static/'

图片testimg.png位于appli1 / static / appli1 /

文件D3.html位于appli1 / templates / appli1 /

感谢您的帮助!

编辑: 我的项目结构对我来说似乎很好,也许我错了。这是它的样子:

test_django/
    manage.py
    db.sqlite3
    test_django/
        __init__.py
        settings.py
        urls.py
        wsgi.py
        __pycache__/
            ...
    appli1/
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        urls.py
        views.py
        __pycache__/
            ...
        migrations/
            ...
        static/
            appli1/
                testimg.png
        templates/
            appli1/
                D3.html

2 个答案:

答案 0 :(得分:2)

您的代码存在以下问题:

1)检查

中的引号
<img src="{% static "appli1/testimg.png" %}" alt="My image"/>

从技术上讲,在上面&#34; {%static&#34;将被读作一个值,然后&#34; %}&#34;作为其他,最后&#34;我的形象&#34;作为另一个。

以下是正确的方法:

<img src="{% static 'appli1/testimg.png' %}" alt="My image"/>

这种方式html读取它&#34; {%static&#39; appli1 / testimg.png&#39; %}&#34;作为一个整体里面的谎言&#39; appli1 / testimg.png&#39;。

2)由于我不知道你的目录结构,也不知道你的根目录,这可能是另一个问题。

如果在你的appli1 / static / appli1&#39;你的静态&#39;与根目录处于同一级别,然后它将正常工作,我认为即使你的模板在&app.93 / appli1 / templates / appli1 /&#39;并且正在加载您的模板。因此证明了“静态”。是在根本层面。

否则,如果不是这样,甚至你的模板都没有加载(因为我只是假设你的模板正在加载),那么你的root&#39;静态&#39;和&#39;模板&#39;文件夹与根目录的级别不同,因此您在html中指定的URL不会发现html和静态文件。

答案 1 :(得分:0)

您可能遇到的问题之一是您的项目 settings.py 文件中的 STATIC_DIR 设置可能未配置。 Django 文档中有一个部分介绍了这部分内容,非常容易理解。在你这样做之后,当你有 {% load static %} 标签时,当你插入一个 {% static 'path/to/file.txt' %} 标签时,Django 将在你的项目主静态文件中查找,然后找到app 文件夹,然后按照您从那里布置的路径进行操作。例如,如果您的文件位于 static/main/images/fart.png 中名为“main”的应用程序中,那么您所要做的就是放置 scr="{% static static/main/images/fart.png%} "