0

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

网址.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:视觉快速专业指南”一书中学习 django。所有的代码看起来都是正确的。不过我在书中发现了一些错误。任何帮助将不胜感激。

谢谢,鲍比

4

2 回答 2

1

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

于 2012-07-23T14:58:10.153 回答
0

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

不过,最好的起点是在线 Django 书籍。它与印刷版的 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.staticfilesINSTALLED_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'),
)

当您投入生产时,STATIC_ROOT将由MEDIA_ROOT您的网络服务器而不是 Django 提供服务。出于静态文件的目的,您需要运行:

python manage.py collectstatic

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

也可以看看:

于 2012-07-23T15:52:54.667 回答