2011-12-20 53 views
0

我正試圖編寫一個在Django項目之外工作的自定義命令。我想我可以按照Django自己的這些命令(例如startproject)的編碼模式,將我的命令包含在應用程序中並安裝它。有沒有辦法添加在項目之外工作的自定義django-admin.py命令?

唉,似乎Django無法看到此命令,因爲它可能不會掃描自定義命令的網站包。

有沒有辦法讓這項工作或我難過正確?

更新:我應該注意到,我正試圖完成的目標(編寫一個基於自定義模板啓動項目的命令)在下一個Django 1.4版本中支持:https://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-startproject(請參閱--template選項)。

回答

1

根據this code from django.core.management,似乎django只在自己的包中搜索無項目命令,然後只能通過掃描INSTALLED_APPS來查找命令,這意味着需要項目。

+0

希望別人有不同的答案,雖然... – StevenC 2011-12-20 02:46:16

+0

我希望這個問題會出現某種解決方案,但似乎非項目命令幾乎必須在Django代碼庫中。如果我很快沒有聽到,我將不得不標記這個答案。 – StevenC 2012-01-13 17:17:29

0

您可以使用自定義的manage.py。

您確實需要一個項目。一個項目不過是一個帶有settings.py(也可能是一個urls.py文件)的python包

所以你可以用你想要的任何命令創建一個項目,並且在你的setup script中包含一個二進制腳本只不過是manage.py in disguise

我用它在virtualenv的bin路徑中有一個manage.py,但是你可以把它叫做別的東西,並在你的系統python中安裝這個「django」項目。

+0

是的,整個目標是有一個可安裝的命令*生成*一個項目。無論如何,正如我在問題的更新中所述,Django在下一個版本中提供了這種支持。 – StevenC 2012-01-13 17:14:50

0

我不太理解你的帖子,爲了什麼目的,你想用Django的manage.py編寫這樣的命令。但是,假設你想(像我一樣)運行一些腳本,例如,可以與Django模型一起使用。如果不設置Django環境,則無法運行此類腳本。

我做到以下幾點:

  1. 把我的代碼script.py

  2. manage.py殼

  3. 的execfile( 'script.py' )

也許,這有助於。

+0

manage.py假定項目的存在。 manage.py與django-admin.py實際上是一樣的,但它在當前的操作系統環境中預先配置了項目的settings.py。我想要做的是編寫一個命令,例如,發出一個*我自己*模板的django項目。我希望django可以用來獲取安裝在網站包中的命令,而無需使用特定的已安裝應用程序來配置項目。正如我上面所說的,只要想想在您創建項目之前就可以使用django自己的命令。 – StevenC 2012-01-05 03:06:04

相關問題