CSS没有加载到Django模板中。在本地运行时工作

时间:2013-12-15 01:43:15

标签: python css django

在我的本地PC上我可以做“python manage.py runserver”,网站运行完美,CSS等等。我刚刚将网站部署到公共服务器,虽然大多数工作都有效,但CSS(和图像)没有加载到模板中。

我发现了一些类似问题的其他问题,但我的代码似乎没有遇到任何相同的问题。

在Django项目设置中,正在使用相同的python函数来允许应用程序查看模板和静态CSS /图像文件。视图正在查找模板,并且加载时没有问题。

都来自settings.py:

STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates/css').replace('\\','/'),
    os.path.join(os.path.dirname(__file__), 'content').replace('\\','/'),
)

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),
)

在其余模板都扩展的base.html文件中:

<head>
    {% load staticfiles %}
    <link rel="stylesheet" type="text/css" href="{% static "style.css" %}" media="screen">
</head>

目录结构:

|project_root/
|--manage.py
|--project/
| |--settings.py
| |--__init__.py
| |--content/
| | |--header.jpg
| |--templates/
| | |--base.html
| | |--css/
| | | |--style.css

我第一次想到CSS没有加载时,Django找不到style.css文件,但因为我使用相同的“os.path.dirname( file )”与模板一样的技术,我不确定是这种情况。

这里有什么问题?

编辑:

我忽略了提到PC和服务器都在运行Python 2.7.5和Django 1.5.5。

2 个答案:

答案 0 :(得分:1)

你从未在帖子中提到它,所以我猜:

你从未跑过./manage.py collectstatic

collectstatic找到所有静态文件(css,images,js)并将它们放在一个目录中(使用django设置STATIC_ROOT选择此目录)然后将Web服务器指向该目录

答案 1 :(得分:1)

您应该使用服务器部署静态文件,而不是django。

official documentation使用collectstatic提及但除非你的静态文件搞砸了,否则通常不是必需的。您只需要一些包含所有静态文件的目录。然后你只需将它与服务器一起推到django会看的同一个地方。

假设您的STATIC_URL为'/static/',因此您需要添加一个将'/static/'映射到静态目录的别名。例如,使用Apache,您应该将此行添加到http.conf:

Alias /static/ /path/to/mysite.com/static/

就是这样!这一点也适用于媒体文件,并且删除django为开发服务器(these kinds of urls)完成的任何静态文件服务是明智的。最后,check out the documentation获取有关其他类型部署的更多信息