2012-06-14 67 views
3

问题完全是这样的,之前我已经问过了,我已经阅读了所有这些问题,并试图理解关于该主题的官方django文档,但我仍然努力使用静态文件虚拟服务器。更具体地讲我只是试图让我的模板,Base.html,使用base.css.在django虚拟服务器上使用静态文件

我的文件夹结构如下所示:

manage.py 
static/CSS/base.css 
VergeGreenITEvent_Website/settings.py 
VergeGreenITEvent_Website/views.py ect 
VergeGreenITEvent_Website/Webpage_Templates/Base.html 

(目前没有app文件夹,因为我下面的“Django的书”的学习,并没有得到该位)

完整的settings.py在这里可以查看:http://pastebin.com/JB3mKRcJ

在我的基地.html模板我现在有代码:

<head> 
    <title>Verge Green IT</title> 
    {% load static %} 

    <link rel="stylesheet" href="{% static "CSS/base.css" %}" type="text/css" /> 
</head> 

CSS仍未应用。 enter image description here你能帮我弄清楚我做错了什么吗?我会非常感激。

我正在使用最新版本的Django。 (1.4)


urls.py:

from django.conf.urls import patterns, include, url 
from django.conf import settings 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 
import views 

urlpatterns = patterns('', 

    url(r'^$', views.Home), 

) 

if settings.DEBUG: 
    urlpatterns += staticfiles_urlpatterns() #this serves static files and media files. 
    #in case media is not served correctly 
    urlpatterns += patterns('', 
     url(r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
      'document_root': settings.MEDIA_ROOT, 
      }), 
    ) 
+1

STATIC_URL应该是“/ static /”我会避免在目录命名中使用大写字母,并且请张贴您的网址 –

+0

@ArgsKwargs,谢谢将其更改为/ static /。你的意思是文件urls.py?好的!但我不确定它会告诉你很多?正确的视图加载正常,HTML都在那里,它只是没有造型。 – Holly

+1

在** STATICFILES_DIRS =(...)**添加**打印STATICFILES_DIRS **之后,您的设置在运行项目时会显示什么。在您的模板中,** {%static“CSS/base.css”%} **生成的链接是什么? –

回答

3

如果你使用Django 1.4,那么我会用静态标签:

{% load static %} 

<link rel="stylesheet" href="{% static "CSS/base.css" %}" type="text/css" /> 

你可能需要在此网址开发文件通过django提供

if settings.DEBUG: 
    urlpatterns += staticfiles_urlpatterns() #this serves static files and media files. 
    #in case media is not served correctly 
    urlpatterns += patterns('', 
     url(r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
      'document_root': settings.MEDIA_ROOT, 
      }), 
    ) 

同样在你的设置中,通常的做法是避免硬编码的位置,下面是一个例子(顺便说一下你的设置中有静态文件查找器吗?

PROJECT_ROOT = path.dirname(path.abspath(__file__)) #gets directory settings is in 

STATIC_ROOT = path.join(PROJECT_ROOT,'static-root') 
# this folder is used to collect static files in production. not used in development 

STATIC_URL = "/static/" 

STATICFILES_DIRS = (
    ('', path.join(PROJECT_ROOT,'static')), #store site-specific media here. 
) 

# 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', 
) 

TEMPLATE_CONTEXT_PROCESSORS = (
    # other processors... 
    "django.core.context_processors.static", 
) 
+0

谢谢你的回答!第一个问题 - 是你公布的url.py位是否用于替换我已有的urlpatterns的定义(现在已在上面发布)?另外我得到的错误“名称'设置'没有为您发布的代码位定义..我不认为我有我的设置中的文件搜索器,你可以在这里看到完整的settings.py文件:http:// pastebin .com/R8bKXkGB。我认为测试的目的可能更容易硬编码的位置,然后改变一次我知道我有文件夹结构的权利,但我会尝试通过您现在发布的设置.. – Holly

+0

哦,其实我有两个 – Holly

+0

没有这些urlpatterns可以追加到你的urls文件的底部。在urls文件的顶部,从django.conf导入设置中添加** ** –

0

你应该写你的settings.py这样的:

import os 
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) 

STATIC_URL = '/static/' # Should be root relative or absolute 

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'), 
) 

# Where your static files will be collected with colletstatic command 
# I use it only in deployed configuration with DEBUG=False 
# Need to be outside STATICFILES_DIR 
STATIC_ROOT = '/var/www/your.site' 

只是可以肯定,与CSS加载萤火虫或WebKit的调试检查。

请记住,如果settings.DEBUG == False Django不会为您的静态文件提供服务。

+0

*不要*将'STATIC_ROOT'添加到'STATICFILES_DIRS'。这是不正确的,你不应该推荐它。 'STATIC_ROOT'仅用于生产中'collectstatic'的输出。它甚至不应该存在于开发中。 –

+0

您误读了,我的例子中没有STATIC_ROOT。 – noirbizarre

+0

我正在使用'STATIC_ROOT'作为“STATIC_ROOT'设置的目录的通用名称”,它几乎总是“静态的”。不要将相同的目录添加到'STATICFILES_DIRS'。这是我的观点。 –

相关问题