56

我在runserver本地机器 (Mac OS X) 上运行 Django 的开发服务器 ( ),无法加载 CSS 文件。

以下是 settings.py 中的相关条目:

STATIC_ROOT = '/Users/username/Projects/mysite/static/'

STATIC_URL = '/static/'

STATICFILES_DIRS = (
'/Users/thaymore/Projects/mysite/cal/static',
)

STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

INSTALLED_APPS = (
# other apps ...
'django.contrib.staticfiles',
)

在我的 views.py 中,我请求上下文:

return render_to_response("cal/main.html",dict(entries=entries),context_instance=RequestContext(request))

在我的模板中{{ STATIC_URL }}正确呈现:

<link type="text/css" href="{{ STATIC_URL }}css/main.css" />

变成:

<link type="text/css" href="/static/css/main.css"/>

这是文件实际所在的位置。我还跑去collectstatic确保收集了所有文件。

我的 urls.py 中还有以下几行:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns += staticfiles_urlpatterns()

我是 Django 的新手,所以可能缺少一些简单的东西——不胜感激。

4

20 回答 20

86

仔细阅读: https ://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/

django.contrib.staticfiles在你INSTALLED_APPS的里面吗settings.py

DEBUG=False吗?如果是这样,您需要runserver使用--insecure参数调用:

python manage.py runserver --insecure

collectstatic与通过开发服务器提供文件无关。它用于将静态文件收集在一个位置STATIC_ROOT,以便您的 Web 服务器找到它们。事实上,collectstatic带着你的STATIC_ROOT套装跑到一条路径上STATICFILES_DIRS是个坏主意。您应该仔细检查以确保您的 CSS 文件现在甚至存在。

于 2011-09-27T19:53:38.217 回答
37

对于 Django 的最新版本,您必须将静态文件配置settings.py为,

STATIC_URL = '/static/' # the path in url

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

并将其与静态模板标签一起使用,

{% load static %}
<link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
于 2017-08-28T12:12:50.833 回答
8

另一个简单的尝试是停止,然后重新启动服务器,例如

$ python manage.py runserver

我查看了其他答案,但重新启动服务器对我有用。

于 2016-06-14T20:48:58.467 回答
3

这些是否从您的settings.py. 我正在粘贴我的项目设置之一:

TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.contrib.messages.context_processors.messages")

另外,这就是我的urls.py

urlpatterns += patterns('', (
        r'^static/(?P<path>.*)$',
        'django.views.static.serve',
        {'document_root': 'static'}
))
于 2011-09-27T20:04:17.297 回答
3

将以下代码添加到您的settings.py

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

之后,在项目的根目录中创建静态文件夹。

要在模板上加载静态文件,请使用:

{% load static %}
  <img src="{% static "images/index.jpeg" %}" alt="My image"/>
于 2017-09-25T09:22:17.363 回答
2

DEBUG = True在我的本地设置中为我做了。

于 2014-03-31T13:23:34.900 回答
2

添加

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, "static"), )

STATIC_ROOT并从中删除settings.py,它对我有用

于 2015-08-19T10:52:52.763 回答
2

这些步骤对我有用,只需在 Django 中查看加载静态文件(CSS、JS 和图像)

我使用 Django 1.10。

  1. static在同级创建一个文件夹settings.py,我settings.py的路径是~/djcode/mysite/mysite/settings.py,所以这个目录是~/djcode/mysite/mysite/static/
  2. 创建两个文件夹static_dirsand static_rootstatic~/djcode/mysite/mysite/static/static_dirs/and ~/djcode/mysite/mysite/static/static_root/;
  3. 像这样写settings.py

    # Static files (CSS, JavaScript, Images)
    
    # https://docs.djangoproject.com/en/1.10/howto/static-files/
    
    STATIC_URL = '/static/'
    
    STATIC_ROOT = os.path.join(BASE_DIR, 'mysite', 'static', 'static_root')
    
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'mysite', 'static', 'static_dirs'),
    )
    
  4. $ python manage.py collectstatic在 shell 中执行此命令;

  5. css在您自己的文件中创建一个文件夹static_dirs并放入您自己的.css文件中,您的 css 文件的路径是~/djcode/mysite/mysite/static/static_dirs/css/my_style.css

  6. 更改文件<link>中的标签.html<link rel="stylesheet" type="text/css" href="{% static 'css/my_style.css' %}">

最后这个链接的路径是http://192.168.1.100:8023/static/css/my_style.css

答对了!

于 2016-09-06T10:30:52.343 回答
0

我试过这个模型,它奏效了。

根据使用 shell 创建的 django 项目更改设置

"django-admin.py startproject xxx"# here xxx is my app name

修改文件夹如下结构加载我们的静态文件以在服务器上运行

xxx的结构是:

>     .
>     |-- manage.py
>     |-- templates
>     |   `-- home.html
>     `-- test_project
>         |-- __init__.py
>         |-- settings.py
>         |-- static
>         |   |-- images
>         |   |   `-- 01.jpg
>         |   |-- style.css
>         |-- urls.py
>         `-- wsgi.py

- 在 Settings.py 中的修改

import os
INSTALLED_APPS = (    'xxx',# my app is to be load into it)

STATIC_ROOT = ''
STATIC_URL = '/static/'
PROJECT_DIR = os.path.dirname(__file__)
TEMPLATE_DIRS = (      os.path.join(PROJECT_DIR, '../templates'),)#include this 

- 修改 urls.py

from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView

class DirectTemplateView(TemplateView):
    extra_context = None
    def get_context_data(self, **kwargs):
        context = super(self.__class__, self).get_context_data(**kwargs)
        if self.extra_context is not None:
            for key, value in self.extra_context.items():
                if callable(value):
                    context[key] = value()
                else:
                    context[key] = value
        return context

urlpatterns = patterns('', 
    url(r'^$', DirectTemplateView.as_view(template_name="home.html")), )

- home.html

<html>
    <head>
        <link href="{{STATIC_URL}}style.css" rel="stylesheet" type="text/css">
    </head>
    <body>
        <h1>This is home for some_app</h1>
      <img src="{{STATIC_URL}}/images/01.jpg" width=150px;height=150px; alt="Smiley ">
    </body>
</html>
于 2013-11-09T05:53:49.857 回答
0

我不得不使用

STATICFILES_DIRS = ( '/home/USERNAME/webapps/django/PROJECT/static/', )

这对我有帮助。

于 2014-05-07T06:41:11.080 回答
0

您是否已添加到模板中:

{% load staticfiles %}

这加载了所需的内容,但由于某种原因,我经历过有时没有这个就可以工作...... ???

于 2013-04-11T08:06:39.367 回答
0

您在 STATICFILES_DIRS 和 STATIC_ROOT 中有相同的路径,我遇到了同样的问题,下面是例外 -

配置不当:STATICFILES_DIRS 设置不应包含 STATIC_ROOT 设置

对于本地,您不需要 STATICFILES_DIRS,因为无论如何您都不需要运行 collectstatic。一旦你评论它,它应该可以正常工作。

于 2013-02-16T01:17:53.547 回答
0

查看您的主应用程序(静态目录所在的位置)是否包含在您的 INSTALLED_APPS 中。

使用启用的查找器搜索文件。默认是查看 STATICFILES_DIRS 中定义的所有位置以及 INSTALLED_APPS 设置指定的应用程序的“静态”目录。

于 2015-06-19T16:43:13.447 回答
0

在 Django 应用程序中运行静态文件需要注意的两个基本点是 - 在文件中声明静态文件settings.py路径

STATIC_URL = '/static/'

另一个重要参数是您使用静态关键字的网页,您需要加载静态文件。

{% load static %}
于 2020-09-03T11:11:45.000 回答
0

我有同样的问题(ununtu 16.04 服务器)。

这对我有帮助

python manage.py collectstatic --noinput

于 2019-08-04T08:51:57.013 回答
0

在你的 settings.py 中添加这个"django.core.context_processors.static",上下文处理器

TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.static",

)

于 2017-04-04T06:47:21.740 回答
0

转到您的 HTML 页面加载静态

{% load static %}

现在我犯的唯一错误就是这个

我的代码:

<img src="**{% static** "images/index.jpeg" %}" alt="My image">

更新:

<img src=**"{% static 'images/index.jpeg' %}' alt="My image"**>

你做对了

于 2020-09-27T18:55:12.520 回答
0

您可以根据您是在本地主机上还是在服务器上运行来设置 STATIC_ROOT。要确定这一点,请参阅这篇文章

您可以将 STATIC_ROOT 配置重写为:

import sys

if 'runserver' in sys.argv:
    STATIC_ROOT = ''
else:
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
于 2019-04-05T15:23:29.493 回答
0

在 settings.py 中添加以下内容

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')  
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
于 2019-08-08T20:40:06.927 回答
0

如果您设置 DEBUG=FALSE 您需要执行以下步骤

在您的 urls.py 文件中:添加此行

from django.views.static import serve

url(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}),
url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),

于 2019-07-10T10:35:52.970 回答