我的项目中有一些“静态文件”的问题
我只想加载一个图像。
这是我的代码:
视图.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))

网址.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>

设置.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

最佳答案

您的代码有以下问题:
1)检查报价

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

从技术上讲,在上面的“{%static”将作为一个值读取,然后“%}”作为另一个值读取,最后“My image”作为另一个值读取。
以下是正确的方法:
<img src="{% static 'appli1/testimg.png' %}" alt="My image"/>

这样,html将其作为一个整体来读取“{%static'appli1/testimg.png'%}”,其中包含“appli1/testimg.png”。
2)由于我不知道您的目录结构以及根目录,这可能是另一个问题。
如果在“appli1/static/appli1”中,您的“static”与根目录处于同一级别,那么它将正常工作,我认为情况就是这样,因为即使您的模板位于“appli1/templates/appli1/”中,而且您的模板正在加载。因此证明“static”在根级别。
否则,如果不是这样,甚至你的模板也没有加载(因为我只是假设你的模板正在加载),那么你的根“static”和“templates”文件夹不是同一级别的根目录,因此html和静态文件不会被你在html中指定的url发现。

07-26 09:36