Django admin.py未知命令:'collectstatic'

时间:2013-07-23 08:10:03

标签: python django

我已经从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

11 个答案:

答案 0 :(得分:38)

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

答案 1 :(得分:10)

对于那些来自谷歌的人,我通过添加

解决了这个问题
'django.contrib.staticfiles',

INSTALLED_APPS

答案 2 :(得分:3)

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

答案 3 :(得分:2)

我最近遇到过这个问题。

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

对我来说,缺少的管理命令是由于MEDIA_URL设置缺少尾部斜杠。出于某种原因,当我使用./manage.py --help

时,这导致除了基本django命令之外的所有命令都丢失了

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

答案 4 :(得分:1)

可能是由“TEMPLATE_CONTEXT_PROCESSORS”引起的。官方文件说:

  

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

我检查了Django setting documentation的默认值。似乎你错过了一个选项:

"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项目的设置文件中,我没有找到这个值。所以我想也许你不需要覆盖这个值。

答案 5 :(得分:0)

为已安装的应用提供结束括号,并将MEDIA_URL='/media'更改为 MEDIA_URL='/media/'看看它是否有效

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

确保'django.contrib.staticfiles'INSTALLED_APPS中。

答案 9 :(得分:0)

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

python manage.py check --settings=test_settings

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

答案 10 :(得分: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