为什么它显示未知命令:'collectstatic',当我尝试收集静态

Why it shows Unknown command: 'collectstatic', when I try to collect-static

我正在尝试在 Digital Ocean 上部署我的 Django 项目。我在 Digital Ocean 上创建了我的 Droplet 和空间,并创建了一个静态文件夹来存储我的静态文件。我从 github-repo. then I installed all requirements 中提取代码并尝试使用命令

收集静态文件
python3 manage.py collectstatic

但显示

Unknown command: 'collectstatic'
Type 'manage.py help' for usage.

我应该在这里做什么?

I checked my manage.py helper but it has no command as collectstatic

    check,
    compilemessages,
    createcachetable,
    dbshell,
    diffsettings,
    dumpdata,
    flush,
    inspectdb,
    loaddata,
    makemessages,
    makemigrations,
    migrate,
    runserver,
    sendtestemail,
    shell,
    showmigrations,
    sqlflush,
    sqlmigrate,
    sqlsequencereset,
    squashmigrations,
    startapp,
    startproject,
    test,
    testserver,

这些是 manage.py 帮助程序中的命令。

而我的settings.py如下

import os
from pathlib import Path
from decouple import config

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent


DEBUG = config('DEBUG', default=False, cast=bool)

SECRET_KEY = config("SECRET_KEY")

ALLOWED_HOSTS = ["134.209.153.105",]

ROOT_URLCONF = f'{config("PROJECT_NAME")}.urls'

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',

    'crispy_forms',

    'accounts',
    'adminn',
    'student',
    'union',
    'chat',
    'channels',

    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',
]
    

AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = config('AWS_STORAGE_BUCKET_NAME')
AWS_S3_ENDPOINT_URL = config('AWS_S3_ENDPOINT_URL')
AWS_S3_OBJECT_PARAMETERS = {
    'CacheControl': 'max-age=86400',
}
AWS_LOCATION = config('AWS_LOCATION')

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

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
STATIC_URL = 'https://%s/%s/' % (AWS_S3_ENDPOINT_URL, AWS_LOCATION)
TEMP = os.path.join(BASE_DIR, 'temp')
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
  
BASE_URL = "http://134.209.153.105"

此处,在静态 url AWS_STORAGE_BUCKET_NAME、AWS_S3_ENDPOINT_UR、AWS_LOCATION 之后...

AWS_STORAGE_BUCKET_NAME=studentcricle
AWS_S3_ENDPOINT_URL=https://sfo3.digitaloceanspaces.com
AWS_LOCATION=studentcircle-static

我认为你应该在 settings.py 文件中取消对 STATIC_ROOT 的注释,然后试试这个:

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

首先请检查基本目录中是否有名为'static'的文件夹;如果是,那么对下面的代码做一点改动,去掉static:

后面的'/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static') 

其次,确保您已经在已安装的应用程序菜单中注册了所有应用程序。

如果问题仍然存在,请尝试运行以下命令:python manage.py shell

它应该让你知道问题出在哪里,如果它在设置中。

感谢那些检查我的问题的人。 我 运行 以下代码解决了我的问题。

export DJANGO_SETTINGS_MODULE=mysite.settings

我是从Django documentation中找到的。 但是我仍然没有发现真正的问题是什么。 这是关于我的设置文件的。或多个设置文件

所以,如果有人知道详情,请在这里描述。或个人。

尝试用以下内容替换 settings.py 文件中的 STATIC_ROOT:

STATIC_ROOT = '/static/'

并且每当您 运行 使用 python3 manage.py collectstatic 命令时,请确保您位于 manage.py 文件所在的基本目录中,并且有一个名为 static 的文件夹。