[英]Serving static files from root directory in Django
我有应用程序级别的 static 文件并希望提供全局 static 文件,例如 JQuery,我的项目结构是这样的:
mysite
├───dashboard
│ ├───migrations
│ ├───static
│ │ └───dashboard
│ │ ├───css
│ │ ├───img
│ │ └───js
│ └───templates
│ └───dashboard
├───etc
├───static
│ └───js
| └───jquery.min.js
└───mysite
我添加了 django 文档,以便 settings.py 看起来
STATIC_ROOT = ""
STATIC_URL = '/static/'
STATICFILES_DIR = [
os.path.join(BASE_DIR, "static"),
os.path.join("static"),
]
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
我的 urls.py 看起来像这样
urlpatterns = [
path('admin/', admin.site.urls),
path("", include(dashboard.urls)),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
我的 INSTALLED_APPS 看起来像这样
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"dashboard",
]
当我尝试从模板访问它时,它会在 runserver 日志中返回响应代码 404,
[09/Apr/2020 01:59:34] "GET /static/js/jquery.min.js HTTP/1.1" 404 1674
模板标签是这样的
{% load static %}
<script src="{% static 'js/jquery.min.js' %}"></script>
这是我的第一个 Django 项目,没有遵循教程,任何帮助将不胜感激。 谢谢你
编辑:我能够通过删除STATIC_ROOT
设置来解决问题
You need to specify a prefix in front of one of the two directories named static
because Django will use the first static file it finds whose name matches, and if you had a static file with the same name in a different application, Django would be unable来区分它们。 我们需要能够将 Django 指向正确的位置,确保这一点的最佳方法是对它们进行namespacing
。 也就是说,将这些 static 文件放在另一个以应用程序本身命名的目录中。
您可以通过指定prefixes在 STATICFILES_DIRS 中命名 static 资产。 例如:
STATICFILES_DIR = [
("main", os.path.join(BASE_DIR, "static")),
os.path.join("static"),
]
接着:
<script src="{% static 'main/js/jquery.min.js' %}"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.