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的主要内容,如果未能解决你的问题,请参考以下文章

如何在组合 django-react 应用程序中提供静态文件(如图像)

调试模式打开时的 Django 和静态文件

django urls文件中的路径设置困难[关闭]

如何返回通过django中的视图的静态文件?

如何返回通过django中的视图的静态文件?

07-Django-基础篇-配置文件和静态文件