21

我已经从 django 1.2.7 升级到 django 1.5.1
我正在使用 python 2.6.6
当我尝试运行时python manage.py collectstatic我得到

未知命令:'collectstatic'

从我的 settings.py

 STATICFILES_FINDERS = (
     'django.contrib.staticfiles.finders.FileSystemFinder',
     'django.contrib.staticfiles.finders.AppDirectoriesFinder',
     'compressor.finders.CompressorFinder',
)


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

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.request",
    "django.contrib.messages.context_processors.messages",
    "MYPROJECT.control.context_processors.debug",
    "django.core.context_processors.static",
)

如果我跑步,python manage.py help 我会得到

Available subcommands:

[django]
    cleanup
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    runfcgi
    runserver
    shell
    sql
    sqlall
    sqlclear
    sqlcustom
    sqlflush
    sqlindexes
    sqlinitialdata
    sqlsequencereset
    startapp
    startproject
    syncdb
    test
    testserver
    validate

如果我跑python manage.py version

1.5.1

4

13 回答 13

42

我有类似的错误消息,但尽管我怀疑,它与 Django 更新无关。如果您在设置中有错误(我有一个空的 SECRET_KEY 值),那么“django”将是唯一被加载的应用程序。我通过运行找到了问题的根源,python manage.py shell并很快告诉我设置有什么问题。

于 2014-02-03T11:49:41.610 回答
21

对于那些从谷歌来到这里的人,我通过添加解决了它

'django.contrib.staticfiles',

INSTALLED_APPS

于 2018-01-07T20:22:01.847 回答
5

如果更改 settings.py 文件的名称或目标,则需要使用键 --settings 调用 manage.py。

于 2014-02-05T19:49:43.293 回答
2

我最近遇到了这个问题。

首先,在你的问题中,INSTALLED_APPS缺少一个右括号......所以检查这不是问题!

对我来说,缺少管理命令是由于MEDIA_URL设置缺少斜杠。出于某种原因,这导致我使用时除了基本的 django 命令之外的所有命令都丢失了./manage.py --help

我发现这一点的方法是运行一个基本命令,它告诉我我的settings.py文件有问题。

于 2013-10-10T01:06:22.320 回答
1

可能是由 "TEMPLATE_CONTEXT_PROCESSORS"引起的。官方文档说:

覆盖设置时要小心,尤其是当默认值是非空元组或字典时,例如 MIDDLEWARE_CLASSES 和 TEMPLATE_CONTEXT_PROCESSORS。确保保留您希望使用的 Django 功能所需的组件。

我在Django 设置文档中检查了默认值,您似乎错过了一个选项:

"django.core.context_processors.tz"

默认值的整个列表是:

> ("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages")

在我的 django 项目的设置文件中,我没有找到这个值。所以我想也许你不需要覆盖这个值。

于 2013-07-23T19:02:21.210 回答
0

给您已安装的应用程序一个右括号并更改它MEDIA_URL='/media'MEDIA_URL='/media/'查看它是否有效

于 2015-09-27T12:02:21.757 回答
0

我在 Django 1.10.3 中遇到了同样的问题。就我而言,我忘记在我的 settings.py 中注册一个应用程序。在 INSTALLED_APPS 中添加应用程序的名称可以解决问题。

于 2017-01-05T17:30:32.827 回答
0

DJANGO_SETTINGS_MODULE缺少环境变量时可能会发生这种情况。

运行export DJANGO_SETTINGS_MODULE=<your settings module>,看看它是否能解决问题。

于 2017-02-16T01:34:44.193 回答
0

确保'django.contrib.staticfiles'INSTALLED_APPS.

于 2020-01-17T22:58:57.907 回答
0

这很可能是由于settings.py文件中的配置引起的,您可以运行执行 Django 的检查以找出确切的问题

python manage.py check --settings=test_settings

您还可以指定settings要检查的文件。

于 2020-02-25T11:39:45.533 回答
0

我在 Django 2.2.7 中遇到了同样的问题,并在这里找到了该命令:

(venv) lead@ip-XXX-XX-XX-XXX:~/Develop/dev_1_2/myproject$ python manage.py help

Type 'manage.py help <subcommand>' for help on a specific subcommand.

Available subcommands:

...

[django]
    check
    compilemessages
...
    startapp
    startproject
    test
    testserver

[sessions]
    clearsessions

[staticfiles]
    collectstatic
    findstatic
    runserver

因为您可以将其运行为:

python manage.py collectstatic
于 2020-05-26T09:38:59.370 回答
0
  1. 确保 settings.py 文件存在于默认位置。或者“python manage.py”知道新的 settings.py 文件位置。例如。
python manage.py collectstatic --settings=projectname.settings
  1. 确保 STATIC_ROOT 存在于 settings.py 文件中例如。
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
于 2021-09-14T16:25:46.913 回答
0

对我来说,这是在我的设置中使用它的结果:

import project.settings.base

代替

from project.settings.base import *
于 2021-12-21T17:04:42.300 回答