2011-06-30 36 views
19

我開始一個新的(實際上很古老的)項目,我知道它是在Django。知道Django的確切版本,我迷迷糊糊了。有沒有一種方法可以知道我的應用程序正在運行的Django版本?爲應用程序獲取Django的版本

回答

19

唯一的方法就是猜測。

  • 1.0:2008年9月
  • 1.1(?)我想通過看settings.py文件的創建日期(或其他基地項目文件)

    的版本發佈日期開始: 2009年7月29日[1]

  • 1.2:5月17日,2010 [2]
  • 1.3:2011年3月23日[3]

在你的urls.py:4]

from django.conf.urls.defaults import * 
from django.contrib import admin 

或者具有admin.py文件中的應用[5]表明,它是一個1.0+項目。

在你的urls.py:6]

(r'^admin/', include(admin.site.urls)), 

建議1.1+。

在你的settings.py文件:

DATABASES = { 
    'default': { 
     'NAME': 'app_data', 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'USER': 'postgres_user', 
     'PASSWORD': 's3krit' 
    }, 
    'users': { 
     'NAME': 'user_data', 
     'ENGINE': 'django.db.backends.mysql', 
     'USER': 'mysql_user', 
     'PASSWORD': 'priv4te' 
    } 
} 

建議1.2+。

[1]:1.1 release notes

[2]:1.2 release notes

[3]:1.3 release notes

[4]:Backwards Incompatible changes 0.96 > 1.0

[5]:Backwards Incompatible changes 0.96 > 1.0

[ 6]:Multiple databases

+2

這會告訴你當前* *版本的Django,而不是該項目的建成的版本。 –

+0

@Ignacio啊,這是正確的。我認爲這是一個正在運行的項目。 –

+0

@jJames Khoury其實我試圖運行該項目,但丟失了Django使用的版本。這不是一個正在運行的項目。我的意思是這是一個正在運行的項目,現在我正在調試一些功能。 –

11

您可以根據settings.py的佈局方式來猜測。你的第一個提示是從database settings。之前的Django 1.2舊的方式是:

DATABASE_ENGINE = 'sqlite3'   # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 
DATABASE_NAME = os.path.join(BASE_DIR, 'db')    # Or path to database file if using sqlite3. 
#DATABASE_USER = ''    # Not used with sqlite3. 
#DATABASE_PASSWORD = ''   # Not used with sqlite3. 
#DATABASE_HOST = ''    # Set to empty string for localhost. Not used with sqlite3. 
#DATABASE_PORT = ''    # Set to empty string for default. Not used with sqlite3. 

此方法仍然支持高達1.3,但現在會導致Django的大聲抱怨被棄用。

由於Django的1.2以下格式的使用:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(PROJECT_DIR, 'mycms.db'), 
    } 
} 

雖然這不是絕對的,但它至少給你一個提示到您的應用程序是否在之前或者Django的1.2之後寫的。

記住的是,寫對一箇舊版本的Django的應用程序仍然應該工作,但你可能會得到大量的廢棄警告的控制檯上,如果你的代碼會引用已廢棄或剛搬到周圍的東西。

這些警告通常可以安全地在短期內被忽略,但是你一定要抽出時間更新您的代碼來引用在自己的新家/格式的功能,以讓他們保持沉默。 Django開發人員在做出正確的事情方面做得很好,只要給予充足的時間和警告以便隨着時間的推移適當遷移舊功能即可。

+0

+1表示折舊的警告。這是一個很好的查找方法。 –

7

我看便知上述接受,我認爲這是容易得多。也許我錯過了一些東西,但這是我會做的。

打開具有其路徑上的Django項目蟒蛇終端。

$ python 
>>> import django 
>>> print django.get_version() 
0.97-pre-SVN-7668 

該版本號僅用於說明。我希望你可能會有所不同。

+4

你可以獲得django的版本,安裝你發佈的版本要容易得多。但那不是我需要的。我想知道我的項目創建的django版本。 –

+1

我來帶一些在rails的經驗,並得到一個應用程序正在使用的版本你只需要檢查gemfile或與早期的版本,你必須檢查一些配置文件。其實上面的答案幫助我很多,因爲我是django的新手。反正謝謝你。 –

+2

或者你可以只用'django-admin.py --version'來獲得當前安裝的django版本的版本 –

1

這個作品在Django 1.7:

import django 
django.VERSION 

...這將產生(在我的機器上):

(1, 7, 0, 'rc', 3) 
+0

downvoter是否會關心爲什麼這是downvoted添加評論?類似的答案是頂部投票在這裏:http://stackoverflow.com/questions/6468397/how-to-check-django-version – Patrick

+0

不會這隻告訴你已安裝的版本,而不是該應用程序所依賴的版本上? – Ramy

相關問題