2013-07-23 27 views
9

我從Django的1.2.7升級到1.5.1的Django
我使用Python 2.6.6
當我嘗試運行python manage.py collectstatic我得到Django的admin.py未知命令: 'collectstatic'

未知命令:從我的settings.py 'collectstatic'

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

+1

是它加載正確的設置文件?請參閱http://stackoverflow.com/questions/17338690/collectstatic-command-is-not-available-in-django-1-6a1?rq=1 –

+0

是的,如果我把錯誤的代碼,我得到一個excepetion – yossi

+0

你可以發佈什麼你有'TEMPLATE_CONTEXT_PROCESSORS'? –

回答

33

有類似的錯誤信息,但儘管我懷疑它與Django更新無關。如果你在設置中有錯誤(我有一個空的SECRET_KEY值),那麼「django」將是唯一被加載的應用程序。我通過運行「manage.py shell」找到了問題的根源,並很快告訴我這些設置有什麼問題。

+1

我想知道我們是否可以將這個提交給Django核心團隊作爲改進請求(因此它更清楚地說明了問題所在) – penguin

+0

在構建docker容器時嘗試運行collectstatic時遇到了同樣的情況,SECRET_KEY由環境變量在部署之前不可用。仍在研究解決方案... – Carl

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項目的設置文件,我沒有找到這個值。所以我想也許你不需要重寫這個值。

+0

sry,它沒有解決問題。 – yossi

+0

好的。嘗試使用django-admin.py來啓動一個新項目並將setting.py文件複製到當前項目中。如果這仍然不起作用,你可能需要打開新的項目。 –

2

我最近遇到這個問題。

首先,在你的問題中,INSTALLED_APPS缺少一個右括號......所以檢查這不是問題!

對我來說,缺少的管理命令是由於MEDIA_URL設置丟失了一個斜線。出於某種原因,這造成的一切命令,除了基本的Django命令,失蹤,當我用./manage.py --help

,我發現這是運行一個基本命令,它告訴我的問題與我settings.py文件的方式。

3

如果更改settings.py文件的名稱或destanation,則需要使用鍵設置調用manage.py。

0

給一個右括號您已安裝的程序,改變MEDIA_URL='/media'MEDIA_URL='/media/'看看它是否工作

0

我在Django 1.10.3有同樣的問題。在我的情況下,我忘了在settings.py中註冊一個應用程序。在INSTALLED_APPS中添加應用程序的名稱可解決問題。

0

當缺少環境變量DJANGO_SETTINGS_MODULE時可能會發生這種情況。

運行export DJANGO_SETTINGS_MODULE=<your settings module>並查看是否解決了問題。

1

對於那些來到這裏從谷歌,我解決它通過添加

'django.contrib.staticfiles', 

INSTALLED_APPS

相關問題