Django没有提供静态文件,导致404错误

n0p*_*0pe 13 css python django url-routing

我似乎无法从我的模板中加载我的静态文件.我遵循了官方文档但我必须遗漏一些东西.

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

myproject
  myproject
    settings.py
    urls.py
  static
    css
      bootstrap.css
      main.css
  templates
    base.html
  myapp1
  myapp2
  ...
  manage.py
Run Code Online (Sandbox Code Playgroud)

我的settings.py:

STATIC_URL = 'static/'
Run Code Online (Sandbox Code Playgroud)

我正在引用我的样式表(从我的模板中):

{% load staticfiles %}
<link rel="stylesheet" href="{% static "css/bootstrap.css" %}" type="text/css">
<link rel="stylesheet" href="{% static "css/style.css" %}" type="text/css"> 
Run Code Online (Sandbox Code Playgroud)

这给了一次渲染(用HTML格式):

<link rel="stylesheet" href="static/css/bootstrap.css" type="text/css">
<link rel="stylesheet" href="static/css/style.css" type="text/css"> 
Run Code Online (Sandbox Code Playgroud)

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

slo*_*ays 23

您是否定义了静态文件目录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'),
)
Run Code Online (Sandbox Code Playgroud)