django将样式表添加到站点

时间:2012-07-23 14:05:43

标签: css django

学习如何将样式表添加到django站点。添加了我认为我需要的代码,但该网站完全忽略了它。这是我的文件;

urls.py

import os.path
from django.conf.urls.defaults import *
from users.views import *

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

stylesheets = os.path.join(os.path.dirname(__file__), 'stylesheets')

urlpatterns = patterns('',
  (r'^$', main_page),
  (r'^stylesheets/(?P<path>.*)$',
    'django.views.static.serve',
    { 'document_root': stylesheets }),
    # Examples:
    # url(r'^$', 'chapter6.views.home', name='home'),
    # url(r'^chapter6/', include('chapter6.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
)

main_page.html文件

<html>
  <head>
    <title>The users application</title>
  <link rel="stylesheet"
    href="/var/chapter6/stylesheets/style.css"
    type="text/css" />
  </head>
  <body>
    <h1>The users application</h1>
    Here are the users:
    <p>{{ username1 }} </p>
    <p>{{ username2 }} </p>
    <p>{{ username3 }} </p>
  </body>
</html>

最后,这是样式表。

body {
  font-size: 12pt;
  background-color: pink;
}

h1 {
  color: red;
}


p {
  font-size: 20pt;
}

我已经完成了所有代码十几次并且找不到任何错误。我正在从“django:visual quick pro guide”一书中学习django。所有代码看起来都是正确的。我在书中发现了一些错误。任何帮助将不胜感激。

谢谢, 波比

2 个答案:

答案 0 :(得分:1)

您的URLconf映射'/ stylesheets /',但您的HTML正在查看'/ var / chapter6 / stylesheets'。

答案 1 :(得分:0)

这本书于2009年出版(反正没有很好的评论)。自2009年以来, lot 在Django中发生了变化,所以如果我是你,我会寻找另一个起点。不幸的是,目前还没有更多的印刷版Django书籍更新。

开始的最佳位置是online Django book。它与Django的印刷权威指南相同,但随着Django本身的变化不断在线更新。

那就是说,我假设你刚刚开始使用最新版本的Django(当时为1.4)。如果没有,请立即升级。在Django 1.3+中,处理静态文件很简单,只需要以下设置:

STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'media')
MEDIA_URL = '/media/'

django.contrib.staticfiles添加到INSTALLED_APPS可能需要将以下行添加到urls.py

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

在开发过程中,Django将在static下的每个应用程序的STATIC_URL目录中提供任何内容。如果您需要项目范围的资源,请将它们放在另一个目录中,例如“assets”,然后将该目录添加到STATICFILES_DIRS

STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), 'assets'),
)

当您开始制作时,您的网络服务器将代替Django提供STATIC_ROOTMEDIA_ROOT。出于静态文件的目的,您需要运行:

python manage.py collectstatic

让Django将所有内容复制到STATIC_ROOT。这仅适用于生产。该目录甚至不应该存在于开发中。

另见: