【发布时间】:2020-03-09 20:05:42
【问题描述】:
我在 Django 中使用 Jinja2 2.10 版。我的 css 样式表出现未找到错误。我已经阅读了 Stackoverflow 上与 Django 中的 Jinja2 模板相关的所有问题,并尝试了所有答案,但仍然没有成功。
我的 jinja2 配置文件(我的 Django 项目中的顶层):
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
from jinja2 import Environment
# This enables us to use Django template tags like {% url ‘index’ %} or {% static ‘path/to/static/file.js’ %} in our Jinja2 templates.
def environment(**options):
env = Environment(**options)
env.globals.update({
'static': staticfiles_storage.url,
'url': reverse,
})
return env
我的 html 模板按预期加载,页面显示在浏览器中,只是 css 加载不起作用。我的文件夹结构是:
Django_project
-- my_app folder
-- Jinja2
| -- my_app
| -- .html files
| -- static
-- my_app
-- styles
-- .css file
也就是说,jinja2 和 static 都是 my_app 文件夹中同一级别的文件夹。
我的 base.html 文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<!--bootstrap responsive viewport: mobile device optimization first -->
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<bootstrapp css goes here>
<link rel="stylesheet" type="text/css" href="/my_app/static/styles/my_app.css">
<!-- defines an area that child templates fill -->
{% block head %}
{% endblock head %}
</head>
我尝试使用 {% static 'path/goes/here.css' %} 并收到关于 'static' unrecognized 的错误消息。但是,如果我在文件顶部使用普通的 {% load static %} Django 标签,我会收到一个错误,即“load”是一个无法识别的标签(这是我所期望的,因为我使用的是 Jinja2)。
引导 css 加载。我试过排除引导链接,这没有区别。 我已经尝试在 Jinja2 环境全局变量中使用静态前缀,正如 here 所解释的,它似乎没有什么区别。
我已阅读 Jinja2 和 Django 文档并遵循所有设置建议。 css 模板在我不使用 Jinja2 的其他 Django 项目中加载,使用 {% load static %}。
对 href 进行硬编码是正确的做法吗?我已经尝试了所有可能的路径引用组合,以防我只是把错误的路径放在那里。错误信息是'未找到:路径/etc/etc.css'
非常感谢任何帮助,谢谢!
【问题讨论】:
-
感谢编辑,我的文件夹结构完全错误!