繁体   English   中英

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

[英]Django admin.py Unknown command: 'collectstatic'

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

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

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

'django.contrib.staticfiles',

INSTALLED_APPS

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

我最近遇到了这个问题。

首先,在您的问题中, INSTALLED_APPS缺少右括号...所以请检查这不是问题

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

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

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

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

给您已安装的应用程序加上右括号并将MEDIA_URL='/media'更改为MEDIA_URL='/media/'看看它是否有效

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

这可能在缺少环境变量DJANGO_SETTINGS_MODULE时发生。

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

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

python manage.py check --settings=test_settings

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

我在 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
  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/')

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

import project.settings.base

代替

from project.settings.base import *

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM