我正在研究Django项目(Django 1.11),我试图使用静态文件。
这是我的项目结构:
|project_name
|---- app_name
|-------- src
|------------ static
|---------------- css
|-------------------- bootstrap
|------------------------ bootstrap.min.css
|-------- templates
|------------ base.html
|------------ first_template.html
|-------- views
|------------ first_view.py
|---- project_name
|-------- settings.py
在settings.py文件中,我在INSTALLED_APPS中有 django.contrib.staticfiles ,我设置 STATIC_URL 变量如下:
STATIC_URL = '/src/static/'
然后,我想在基本模板中使用静态文件,这就是我所做的:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
<link href="{% static "css/bootstrap/bootstrap.min.css" %}" rel="stylesheet">
</head>
<body>
{% block content %}{% endblock content %}
</body>
</html>
当我加载 first_template.html 以及 base.html 文件时,找不到bootstrap.min.css文件(404)。
我知道这是一个微不足道的问题,但我真的不明白我错过了什么。我已经检查了很多类似的SO问题而没有成功,也因为他们中的大多数都是旧的django版本 提前谢谢
答案 0 :(得分:2)
由于您使用的是自定义路径,为什么不告诉django在哪里找到它...在设置中使用它并且它应该可以正常工作。
如果您认真考虑保留文件结构
#settings.py
STATICFILES_DIRS = (
...
os.path.join(BASE_DIR, 'app/src/static') # build appropriate path
)
<强>更新强>
将静态文件夹移动到manage.py
存在的位置或移动到app的子项
示例:
...manage.py
...static
...app/
或
...manage.py
...app/static
答案 1 :(得分:1)
STATIC_URL
仅控制静态文件URL的前缀(即网址)。它无法控制磁盘上的物理位置。
将您的静态文件从app_name/src/static/
移动到app_name/static/
,然后将其修复
编辑: 如果你想保持目录结构不变,你有几个选项
STATICFILES_DIRS
django.contrib.staticfiles.finders.AppDirectoriesFinder
的类并设置source_dir属性 from django.contrib.staticfiles.finders import AppDirectoriesFinder
class MyAppDirFinder(AppDirectoriesFinder):
source_dir = "src/static"
然后,您可以将课程添加到STATICFILES_FINDERS
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'myapp.finders.MyAppDirFinder',
]
参考:https://docs.djangoproject.com/en/1.11/ref/settings/#static-files
答案 2 :(得分:0)
Indside静态文件夹,您需要创建一个应用程序名称
的文件夹现在你的文件夹结构是
|-------- src
|------------ static
|---------------- css
|-------------------- bootstrap
|------------------------ bootstrap.min.css
将其更改为
|-------- src
|------------ static
|-------------------app_name
|--------------------------- css
|-------------------- ----------bootstrap
|---------------------------------------- bootstrap.min.css
答案 3 :(得分:0)
添加
STATICFILES_DIRS=(os.path.join(BASE_DIR, '../frontend'),)
或
STATICFILES_DIRS=()
在您的设置中。 然后它应该工作。 花了很长时间才找到这个。