13

我似乎无法从我的模板中加载我的静态文件。我已经遵循了官方文档,但我一定遗漏了一些东西。

我的目录布局(由 Django 生成,大部分文件省略):

myproject
  myproject
    settings.py
    urls.py
  static
    css
      bootstrap.css
      main.css
  templates
    base.html
  myapp1
  myapp2
  ...
  manage.py

我的settings.py

STATIC_URL = 'static/'

我像这样引用我的样式表(来自我的模板):

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

这使得它一旦呈现(在 HTML 中):

<link rel="stylesheet" href="static/css/bootstrap.css" type="text/css">
<link rel="stylesheet" href="static/css/style.css" type="text/css"> 

然而这些链接实际上并没有导致任何地方(当我访问它们时,我从 Django 收到 404 错误)。我觉得我可以通过在 中添加一些东西来解决这个问题urls.py,但我认为 Django 在您运行服务器时会自动执行此操作?我错过了什么?

4

8 回答 8

22

您是否在 中定义了静态文件目录settings.py

我猜你'django.contrib.staticfiles',在你安装的应用程序中有。

如果你还没有定义你的静态文件目录,你可以这样做:

import os.path

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'),
)
于 2012-04-15T20:31:05.983 回答
3

这是 django for windows 中静态/媒体/模板访问的有效解决方案,

设置.py

import os.path

STATIC_ROOT = ''

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join('static'),
)
于 2013-06-13T06:43:54.563 回答
3

通过在 settings.py 文件中添加“STATICFILES_DIRS”解决了我的问题

STATIC_URL = '/static/'
STATICFILES_DIRS = ( os.path.join('static'), )
于 2016-08-21T19:35:29.110 回答
1

我以为 Django 在您运行服务器时会自动执行此操作?

你为什么这么想?如果您遵循官方文档,您将不会发现这一点。在此处阅读您必须做什么才能在开发中为他们服务。

还有一个问题。YourSTATIC_URL是一个相对链接,因此浏览器会将其添加到现有页面 URL。因此,如果您在 page 上/foo,则'static/css/style.css'评估为/foo/static/css/style.css'.

确保它要么以/- ie /static/- 开头,要么是完整的 URL,即http://myserver.com/static/.

于 2012-04-15T20:17:40.790 回答
1

检查是否STATICFILES_FINDERS在您的settings.py

https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_FINDERS

的默认值STATICFILES_FINDERS足够好,但您有 2 个选择:

  • 您需要在应用程序中包含静态文件,并且在您的应用程序中包含此应用程序INSTALLED_APPS

  • STATICFILES_DIRS或者如果期望行为是以下行为之一,则需要定义静态文件的路径django.contrib.staticfiles.finders.FileSystemFinder

于 2012-04-15T20:38:03.903 回答
0

我也遇到了这个问题。我通过像这样修改href解决了这个问题:

<html>
<link rel="stylesheet" href="{{STATIC_URL}}css/bootstrap.css" type="text/css">
<link rel="stylesheet" href="{{STATIC_URL}}css/style.css" type="text/css"> 
</html>
于 2014-04-02T15:00:09.177 回答
0

确保您在正确的位置设置了静态文件夹,也就是说,如果它位于 app 文件夹中,那么您可以从这个有用的资源1中获得进一步的说明。

于 2019-01-30T10:21:31.480 回答
-6

我的解决方案是DEBUG = True在设置中。

于 2017-10-09T13:21:10.877 回答