为css文件设置django

时间:2012-10-03 15:51:20

标签: python css django webfaction

我是django的新手,并试图创建一个个人科技博客。我正在主持webfaction。我使用this video设置了博客。但样式表不起作用。我跟着the step-by-step procedure创建了webfaction提到的静态文件,但是stlyesheet仍然没有工作。

我创建了一个静态应用程序:staticapp并将其添加到/static的网站 正如webfaction doc中提到的那样。

settings.py

  STATIC_ROOT = 'home/myaccount/webapps/staticapp'
  STATIC_URL = 'http://myblogtest.myaccount.webfactional.com/static'
  STATICFILES_DIRS = ( 'junk','static',)


INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
     'django.contrib.admin',
     'django.contrib.admindocs',
     'blog',
     )

我从我的html页面引用如下:

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

我错过任何一步吗?我可以看到许多答案说要在urls.py中添加代码段,但在Webfaction的doc中没有提到。所以我没有那样做。

我可以看到很多人都面临同样的问题,但答案并没有帮助我,因为我是新手。请帮我设置一下。 :)

2 个答案:

答案 0 :(得分:3)

STATIC_ROOT需要有一个前置斜杠/,即/home... home...

不要static目录添加到STATICFILES_DIRS。你有我的许可打击任何人建议你用最近的钝器做那件事。 static目录应该在开发中完全存在,并且在生产中它应该只能通过python manage.py collectstatic创建或修改。

DO 将静态资源存储在每个应用程序的单个static目录或完全不同的项目级目录中,即此目录不应与{{1}的目录相同}或MEDIA_ROOT。然后,将目录添加到STATIC_ROOT

在Django 1.4+中,您应该在模板中使用STATICFILES_DIRS模板标记:

{% static %}

这会自动为您附加网址的{% load static from staticfiles %} <img src="{% static "images/hi.jpg" %}" alt="Hi!" /> 部分,因此您提供的路径参数应该相对于此。

在Django 1.3中,确保在STATIC_URL设置中出现{{ STATIC_URL }}后,您可以使用'django.core.context_processors.static'。您的观点还需要使用TEMPLATE_CONTEXT_PROCESSORS,这意味着使用基于类的视图,RequestContext方法或将render传递给context_instance=RequestContext(request)

如果您希望Django在开发中轻松提供静态文件,可以在render_to_response的末尾添加以下内容:

urls.py

这将在生产环境(from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns += staticfiles_urlpatterns() )中工作。对于生产,您需要运行DEBUG=False,然后让您的前端Web服务器(nginx,Apache等)服务于python manage.py collectstatic的目录。

答案 1 :(得分:1)

您已在设置中定义STATIC_URL;你应该在你的html模板中使用它

<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}/style/style.css">

只要您没有从设置中的TEMPLATE_CONTEXT_PROCESSORS中删除任何内容,该操作就可以正常工作。

您还可以考虑使用资产管理器为您生成模板中的所有JS和CSS链接,而不是自己编写。 django-pipeline非常好,可以为你处理JS和CSS连接和压缩等事情。