STATIC_ROOT 在 Django 1.8 中设置

STATIC_ROOT setup in Django 1.8

我试过了n我不能按照官方文档设置... 我在这里附上IMG,请给我建议,问题在哪里。enter image description here

或者,用字典树结构给我简单的步骤。

谢谢。

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root', 'static')


STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
    # '/var/www/static/',
)

STATIC_ROOT 应该没有引号:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

此外,STATIC_ROOT 文件夹不应与 STATICFILES_DIR 文件夹同名,因此您应该将其命名为 staticfiles 之类的名称:

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles/')

指出 STATIC_ROOT 不是文件系统路径的错误很明显。 Django 要求 STATIC_ROOT 是计算机上文件夹位置的绝对路径。此错误可能意味着您得到的 STATIC_ROOT 是部分路径或相对路径。 BASE_DIR 的值是多少?在设置 STATIC_ROOTprint(STATIC_ROOT) 的行之后查看它是什么值。

尝试设置 BASE_DIR 如下:

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

其他错误

在线

STATIC_ROOT = 'os.path.join(BASE_DIR, 'static')'

您的值用单引号括起来。 os.path.join() 是函数调用。删除引号并像这样更改行:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

此外,STATIC_ROOT 不能包含在 STATICFILES_DIRS 中的文件列表中。考虑将 STATIC_ROOT 文件夹设置为:

STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')

STATIC_ROOT = 'os.path.join(BASE_DIR, 'static')' 是一个错误的字符串。

应该是STATIC_ROOT = os.path.join(BASE_DIR, 'static')

STATIC_ROOT = 'os.path.join(BASE_DIR, 'static_root', 'static') 无法工作。

试试这个:

# define your base directory
# It will be `absolute/path/to/demo3`
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATIC_URL = '/static/'
# define where your static files will be collected
# It will be `absolute/path/to/demo3/static`
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# keep it empty for the moment
STATICFILES_DIRS = (
)

你要明白STATICFILES_DIRS作用:

Your project will probably also have static assets that aren’t tied to a particular app. In addition to using a static/ directory inside your apps, you can define a list of directories (STATICFILES_DIRS) in your settings file where Django will also look for static files.

我建议你仔细阅读 Django 文档:Managing static files

在 settings.py 文件中使用最新版本的 python 和 django 创建项目时,默认情况下 from pathlib import Path 语句是 there.So 在这种情况下不需要使用 os.path.

from pathlib import Path # Import First

STATIC_ROOT = Path.joinpath(BASE_DIR, 'static_collected')

我添加了一行代码,它对我有用,我希望以后不会痛苦:)

import os

记得在您的根目录中创建一个 static 文件夹,并在您的 project 文件夹中创建一个 static 文件夹。那么您的文件结构将是:

demo3
    /demo3/staticfiles # collection folder for all static files
    /static            # root static folder
    /userForms/static  # your app static files
# OR
demo3
    /demo3
    /static_files     # collection folder for all static files
    /static           # root static folder
    /userForms/static # your app static files
    

将此添加到您的 settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'demo3', 'staticfiles')
或者取决于你想要收集文件夹的位置
STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')

运行python manage.py collectstatic

然后它将捆绑项目 staticfiles 或根 static_files 文件夹中的所有静态文件,具体取决于您想要它们的位置。