2

我是 django 的新手,正在尝试创建个人技术博客。我在 webfaction 上托管。我已经使用这个视频设置了博客。但是样式表不起作用。我按照分步过程创建了 webfaction 提到的静态文件,但 stlyesheet 仍然无法正常工作。

我创建了一个静态应用程序:staticapp并将其添加到网站中,/static 如 webfaction 文档中所述。

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 的文档中没有提到它。所以我没有这样做。

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

4

2 回答 2

3

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

不要static目录添加到STATICFILES_DIRS. 我允许你用最近的钝物打任何建议你这样做的人。该static目录在开发中根本不应该存在,而在生产中它只能通过python manage.py collectstatic.

务必将您的静态资源存储在每个应用程序的单独static目录或完全不同的项目级目录中,即该目录不应与MEDIA_ROOTor的目录相同STATIC_ROOT。然后,将此目录添加到STATICFILES_DIRS.

在 Django 1.4+ 中,您应该在模板中使用{% static %}模板标签:

{% load static from staticfiles %}
<img src="{% static "images/hi.jpg" %}" alt="Hi!" />

这将自动为您附加STATIC_URLURL 的一部分,因此您提供的路径参数应该是相对的。

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

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

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()

这在生产环境中不起作用 ( )DEBUG=False。对于生产,您需要运行python manage.py collectstatic,然后让您的前端网络服务器(nginx、Apache 等)为STATIC_URL.

于 2012-10-03T17:27:32.353 回答
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 连接和压缩之类的事情。

于 2012-10-03T16:03:13.330 回答