在 Django 上加载静态文件的问题
Posted
技术标签:
【中文标题】在 Django 上加载静态文件的问题【英文标题】:Problem with loading static files on Django 【发布时间】:2020-06-24 06:20:02 【问题描述】:我正在使用 Django 3.0.3 和 Python 3.7.6。
我在 https://docs.djangoproject.com/en/3.0/howto/static-files/ 上关注了 Django 文档,但我找不到问题所在。
目录:
project_name
-app_name
-static
-css
-main.css
-js
...
-project_name
...
-settings.py
settings.py:
INSTALLED_APPS = [
...
'django.contrib.staticfiles',
]
...
STATIC_URL = '/static/'
当我尝试在模板中使用静态文件时:
% load static %
<link rel="stylesheet" href="% static "css/main.css" %">
pycharm 显示
unresolved template reference '"css/main.css"'
终端节目
"GET /static/css/animate.css HTTP/1.1" 404 1671
【问题讨论】:
您能否重新格式化您的目录列表以使其有意义? 您是否:1) 定义了 STATIC_ROOT 和/或 STATICFILES_DIRS 2) 运行 collectstatic 3) 为静态文件添加了 urlpatterns? DEBUG=true 还是 false? 感谢您的提示。我刚开始学习 Django,这些技巧帮助我更好地理解它。 【参考方案1】:我通过以下步骤解决了这个问题:
1.在settings.py中添加如下代码
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static/'),
)
2.在我的模板中添加type="text/css"
<link rel="stylesheet" type="text/css" href="% static "css/main.css" %">
虽然它对我有用,但我不知道为什么。
【讨论】:
【参考方案2】:在你的 url.py 中使用它
urlpatterns+=static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns+=static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
【讨论】:
【参考方案3】:我遇到了同样的问题,但我使用的是django 3.1
。
我只将此行添加为official document:
在settings.py中
...
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / 'static']
在 .html 文件中
% load static %
...
<link rel="stylesheet" href="% static 'css/application.css' %" type="text/css" />
而且效果也很好。
【讨论】:
以上是关于在 Django 上加载静态文件的问题的主要内容,如果未能解决你的问题,请参考以下文章
Django静态文件没有加载。修复settings.py以在相对路径上加载文件
[django]django 在apache2上部署静态文件如何加载
DJANGO:静态文件未在实时服务器中加载(但在本地加载)?