2011-09-23 127 views
1

我已经下载了一个包含基本html文件,图像和css文件的在线模板。现在我想在django中实现所有这些。把Django中的css文件调用的图像放在哪里?

到目前为止,我试过这样的,但没有很好的效果,该页面没有得到CSS文件或没有图像渲染,或者两者都是,还有什么是错的

settings.py:

MEDIA_ROOT = rel('resources') 
MEDIA_URL = '/resources/' 

base.html文件:

<link rel="stylesheet" type="text/css" href="resources/style.css" /> 

我已经把我的图片,并在资源文件夹中的CSS文件和模板文件夹,它不工作,请帮助

回答

2

编辑:

我被关那里咯... STATIC_ROOT指的是目录,Django会收集所有静态文件。 STATICFILES_DIRS是静态文件的搜索路径列表。所以像这样:

settings.py:

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files 
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/home/media/media.lawrence.com/static/" 
STATIC_ROOT = PROJECT_ROOT + 'static/' 

# URL prefix for static files. 
# Example: "http://media.lawrence.com/static/" 
STATIC_URL = '/static/' 

# Additional locations of static files 
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
    "C:/www/django/static", 
) 

# List of finder classes that know how to find static files in 
# various locations. 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

,并添加网址的urls.py:

urlpatterns += staticfiles_urlpatterns() 

原来的答案:

这可能是相当混乱。 MEDIA_ROOT目录用于通过文件上传表单上传的文件。对于可由客户端请求直接访问的物理文件(例如样式表,脚本和图像),您必须使用STATIC_ROOT和STATIC_URL。 STATIC_ROOT必须是我认为的绝对路径。

settings.py

# the url: myserver.com/static/ 
STATIC_URL = '/static/' 
# refers to this directory: 
STATIC_ROOT = '/home/user/static server files' 

让我们说你把你的CSS中的 “/ home/user中/静态服务器上的文件/ CSS /” 然后参考他们这样的:

base.html文件

<link rel="stylesheet" href="{{ STATIC_URL }}css/style.css" /> 
+0

尝试检查文件的html源代码后,看看“href”指向什么。也许有迹象表明出了什么问题。 – grim

0

嗯不幸的是,这并没有帮助。我无法在settings.py中找到一个变量STATIC_URL/ROOT,所以我按照上面所述添加了它,还在base.html中添加了该变量,但仍然无法找到css文件。

我做的另一个工作是调查代码。我得到了一个好公共应用程序的源代码,并检查base.html文件,并说这样的:

<link rel="stylesheet" href="{{ cssRootUrl }}style.css" 

然后我去检查settings.py和cssRootUrl是没有定义。所以我不知道这种变量隐藏在哪里...

1

假设你现在正在开发服务器上工作。

MEDIA_URL =的 'http://本地主机/媒体/'

为django的计算路径和用作各种其他路径 DJANGO_ROOT = os.path.dirname(os.path.realpath(django.__file__)) SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) PROJECT_ROOT = os.path.dirname(__file__)

TEMPLATE_DIRS = ( os.path.join(SITE_ROOT, 'templates/'), )

MEDIA_ROOT = os.path.join(SITE_ROOT, 'templates/media/')

起点部位

以上应该解决您的问题,因为IOT对我来说工作得很好。

在参考其保存在“模板/媒体” css文件 <link href="/media/css/base/base.css" rel="stylesheet" type="text/css"></link>

希望这可以帮助你

0

这可以解决你的问题。我建议你为你正在使用的静态文件(css,js和images)命名你的文件夹为“static”。

  1. 在你的文件的第一行打开你的settings.py和

    -add这样的:

    进口os.path中

    - 更改您的STATIC_ROOT的价值:

    STATIC_ROOT = os.path.join(PROJECT_DIR,'static /')

    -change您STATIC_URL的价值:

    STATIC_URL = '/静态/'

  2. 创建一个项目中的根名为 “静态” 的文件夹。

  3. 为你的静态文件如css,javascript等创建一个文件夹。我建议你为不同类型的文件使用不同的文件夹。
  4. 打开项目 的urls.py -add给你的导入:导入设置 -add这URL模式:

    (R'(?:???* /)(P (css | jquery | jscripts | images)/.+)$','django.views.static.serve',{'document_root':settings.STATIC_ROOT}),

    注意:在本例中,在我的静态文件夹中命名为css,jquery,jscripts和图像。

  5. 在模板中添加此:

对CSS文件:(在这个例子中,default.css是CSS文件的名称)

<link href="/{{ STATIC_ROOT }}css/default.css" rel="stylesheet" type="text/css" media="all" /> 

为JavaScript:

<script type="text/javascript" src="/{{ STATIC_ROOT }}jquery/jquery.js"></script>