我正试图找到一种方法,如何告诉Django
存储static
css
个static
文件的位置。问题是它无法找到settings.py
文件夹。我已经设置了STATIC_URL = '/static/'
INSTALLED_APPS = (
...
'django.contrib.staticfiles',
)
文件,但没有帮助。
SETTINGS.PY:
...
...
<title>Rozcestník</title>
<!-- Bootstrap core CSS -->
{% load static %}
<link href="{% static "css/bootstrap.min.css" %}" rel="stylesheet">
...
base.html文件:
{{1}}
问题出在哪里?
答案 0 :(得分:3)
我不太喜欢你的目录(结构)。
如果文件夹“web”是一个应用程序而“dedo”是一个带有设置的文件夹,那么你的app文件夹中就不能有“static”和“templates”文件夹。
它应该是:
dedo
__init__.py
settings.py
urls.py
views.py
static
css
bootstrap.min.css
templates
base.html
index.html
web
migrations
__init__.py
admin.py
models.py
tests.py
views.py
db.sqlite3
manage.py
在你的setttings.py中,你需要写下这个:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATIC_URL =通过浏览器访问您的静态文件
STATICFILES_DIRS = Django将查找静态文件
重要:强>
如果您要通过适当的Web服务器(nginx,apache,...)使用WSGI(gunicorn,modwsgi,...)部署您的Web应用程序,则STATIC_ROOT = 仅
“python manage.py collectstatic”或“python3.X manage.py collectstatic”是用于将静态文件从STATICFILES_DIRS(加上/ admin /的静态文件)复制到STATIC_ROOT的命令,这意味着STATIC_ROOT不能是与STATICFILES_DIRS相同。
答案 1 :(得分:1)
我猜你没有使用&#34;收集静态&#34; 操作。
在你的shell / CMD中运行:
python manage.py collectstatic
如果它没有解决您的问题,请发布您遇到的错误。
答案 2 :(得分:1)
此部署的一个问题是,一旦通过AWS EB发布,静态文件 (如style.css)不会被读取,页面缺乏样式。文件和论坛 指出这是Django的部署方式还不太清楚 并且必须指示Web服务器使用这些文件。
一旦STATIC_ROOT
和STATIC_URL
在project/settings.py
内部定义,并且
在urlpatterns
内的project/urls.py
中添加了此问题。
STATIC_ROOT 包含从静态文件提供服务的路径。
collectstatic 会将应用和管理文件放入STATIC_ROOT中。
当浏览器发出请求时, STATIC_URL 拥有指向STATIC_ROOT的链接。
+ static(设置[...] 告诉Web服务器要使用STATIC_URL。
我有一个功能完整的项目,其中包含EB部署说明:https://github.com/nandoabreu/django-polls