静态文件不再加载 - Django
Posted
技术标签:
【中文标题】静态文件不再加载 - Django【英文标题】:Static files doesn't load anymore - Django 【发布时间】:2020-12-10 00:33:25 【问题描述】:一开始一切都很好,但现在我的静态文件无法加载。我认为这是一个非常奇怪的问题,因为当它发生时我并没有真正触及任何可能对问题产生影响的东西。其他一切工作正常,我只是出于某种原因无法获取静态文件。我有时会收到 200 个 http 响应,试图像这样获取静态文件:
[20/Aug/2020 16:12:51] "GET /order/checkout/ HTTP/1.1" 200 2029
[20/Aug/2020 16:12:51] "GET /static/my_pizza_place/js/client.js HTTP/1.1" 200 2194
[20/Aug/2020 16:12:51] "GET /static/css/master.css HTTP/1.1" 200 80
[20/Aug/2020 16:12:51] "GET /static/css/global.css HTTP/1.1" 200 530
但它仍然没有将样式应用于我的 html 代码。不过,我通常只会在我的 client.js 文件上收到 304 http 响应。我觉得我已经尝试了几乎所有的方法,所以我希望你们能帮助我找出问题所在。
我的文件:
SETTINGS.PY BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
BASE.HTML
<!DOCTYPE html>
% load static %
<html lang="en">
<head>
...
<link rel="stylesheet" href="% static 'css/master.css' %">
<link rel="stylesheet" href="% static 'css/global.css' %">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="..." crossorigin="anonymous">
<script src="% static 'my_pizza_place/js/client.js' %" defer></script>
</head>
<body>
<div class="container mycontent">
% block checkout %
% endblock %
</div>
</body>
</html>
INDEX.HTML
% extends 'base.html' %
% block content %
...
% endblock %
URLS.PY - 在项目文件夹中
urlpatterns = [
path('admin/', admin.site.urls),
path('',views.HomePage.as_view(),name="home"),
path('customer/',include('customer.urls', namespace='customer')),
path('customer/',include('django.contrib.auth.urls')),
path('order/',include('orders.urls',namespace='order'))
]
VIEWS.PY
class HomePage(TemplateView):
template_name = 'index.html'
目录结构
项目app_name 项目名称 静态CSS模板global.css master.cssmy_pizza_placejsclient.jsbase.html
如果您需要更多信息,请尽管询问。提前致谢
【问题讨论】:
你能用extends块显示html吗? @EricMartin 我添加了一些额外的文件,包括 index.html 文件。 html代码本身很标准,所以我没有添加。 谢谢,我要求它检查每个模板中的负载静态。与@AliReda-M 的结论相同。您可以在:***.com/questions/14141350/… 中获得详细信息 【参考方案1】:您的问题只是您应该在每个文件中添加 % load static % 。您不必在每个 .html 文件中链接 css 文件,但在每个文件中您应该加载静态文件。我以前遇到过这个问题,我相信这会为你解决,一定要在 %block content % 标签之前添加 % load static %。如果您需要进一步解释,请在下方评论。
【讨论】:
不幸的是,这不起作用。我刚刚阅读了有关模板继承的 django 文档,理论上是的,您还应该在其他 html 文件中添加加载标签,因为子模板不会继承这些标签。奇怪的是,在我没有添加额外加载标签的其他项目中,它对我来说效果很好。正如我所提到的,它在一段时间内也适用于这个项目。老实说,我不知道这里发生了什么。但是仍然感谢您的回复,这总是值得赞赏的。 欢迎,但如果您还没有尝试过,尝试一下,您将一无所获。祝你好运!以上是关于静态文件不再加载 - Django的主要内容,如果未能解决你的问题,请参考以下文章