Django:使用静态、困难的时间和路径来渲染 css
Posted
技术标签:
【中文标题】Django:使用静态、困难的时间和路径来渲染 css【英文标题】:Django: Using static, hard time with paths to render css 【发布时间】:2014-05-19 04:06:00 【问题描述】:这有点尴尬,但我不知道如何解决这个问题:
首先,我的项目目录是这样的(还有更多的目录,但我们不关心它们):
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
会是什么样子。
【问题讨论】:
【参考方案1】:例如,尝试从 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
运行,则需要将静态和媒体 URL 添加到 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))
【讨论】:
以上是关于Django:使用静态、困难的时间和路径来渲染 css的主要内容,如果未能解决你的问题,请参考以下文章