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