我是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中没有提到。所以我没有那样做。
我可以看到很多人都面临同样的问题,但答案并没有帮助我,因为我是新手。请帮我设置一下。 :)
答案 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连接和压缩等事情。