这有点尴尬,但我不知道如何解决这个问题:
首先,我的项目目录看起来像这样(有更多目录,但我们并不关心它们):
projectfolder/
wsgi/
openshift/
templates/
home/
simple-sidebar.html
static/
css/
fonts/
js/
我们关注的文件是simple-sidebar.html
,如下所示:
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<title>Starter Template for Bootstrap</title>
<!-- Bootstrap core CSS -->
<link href= "{% static "css/bootstrap.css" %}" rel="stylesheet">
<!-- Add custom CSS here -->
<link href="{% static "css/simple-sidebar.css" %}" rel="stylesheet">
<link href="{% static "font-awesome/css/font-awesome.min.css" %}" rel="stylesheet">
</head>
现在由于某种原因,我的静态模板标签无效,但这可能是因为我不知道如何在settings.py
中设置我的静态模板内容:
STATIC_ROOT = os.path.join(PROJECT_DIR, '..', 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = () <--- dont know if I need this one?
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
PS:如果没有{%static%}标签,你会怎么做?我不确定我的样式表href
会是什么样子。
答案 0 :(得分:0)
尝试从STATIC_ROOT中删除点,例如
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
STATICFILES_DIRS
可供您使用。当您运行./manage.py collectstatic
时,您实际上是要求python查找所述目录中的所有文件并将其放入STATIC_ROOT
如果您想手动映射文件(没有静态标记),则必须写出文件的完整路径,例如/some/directory/path/css/style.css
。
最后,如果您使用的是DEBUG = True
,则需要将您的静态和媒体网址添加到urls.py
,以便有一条实际的路径。例如
from django.conf import settings
# ... your normal urlpatterns here
if settings.DEBUG:
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT}),
(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.STATIC_ROOT}))