从 Django 中的项目目录提供静态文件

dar*_*rse 2 python django django-templates django-static django-staticfiles

我有以下项目结构:

myproject
    - myapp
    - manage.py
    - myproject
          - settings.py
          - urls.py
          ...
    - static
    - templates
Run Code Online (Sandbox Code Playgroud)

我想从这个静态文件夹中提供所有静态文件。在我的settings.py中,我有以下内容:

myproject
    - myapp
    - manage.py
    - myproject
          - settings.py
          - urls.py
          ...
    - static
    - templates
Run Code Online (Sandbox Code Playgroud)

但是,在我的模板之一中,当我使用以下命令调用静态文件时......

{% load static %}
...
<link href="{% static 'css/styles.css' %}" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)

...没有加载任何内容。

但是,如果我在 myapp/static/css/styles.css 中添加 css 文件,则一切正常。如何从项目根文件夹提供静态文件?谢谢你的帮助。

Iqb*_*ain 5

第一步:您的项目结构(文件夹目录)似乎没问题。

myproject
- myapp
- manage.py
- myproject
      - settings.py
      - urls.py
      ...
- static
- templates
Run Code Online (Sandbox Code Playgroud)

第二:需要STATIC_URL = '/static/'settings.py文件中定义。

第三:需要加载模板文件中的static,并使用相对路径。

{% load static %}
...
<link href="{% static 'css/styles.css' %}" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)

添加此settings.py文件。

# Add static file directory
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
Run Code Online (Sandbox Code Playgroud)

settings.py中列出的已安装应用程序 应该存在于django.contrib.staticfiles列表中。如果没有,请确保它在列表中。