获取应用程序的Django版本
我正在开始一个新的(其实是很老的)项目,我知道这个项目是用Django做的。但是我不知道它到底是用哪个版本的Django来构建的。有没有什么方法可以让我知道我的应用程序正在运行的Django版本呢?
6 个回答
我看到上面接受的答案,我觉得这个方法简单多了。也许我漏掉了什么,但我会这样做。
打开一个Python终端,确保你的Django项目在路径中。
$ python
>>> import django
>>> print django.get_version()
0.97-pre-SVN-7668
这个版本号只是用来举例的。你的版本可能会不一样,希望如此。
你可以通过查看settings.py的结构来猜测一些信息。第一个提示来自于数据库设置。在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的开发者在这方面做得很好,会给出足够的时间和警告,让旧功能能够顺利迁移。
唯一的方法就是猜测。我建议你先查看一下settings.py文件(或者其他基础项目文件)的创建日期。
各个版本的发布时间:
如果你的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版本说明
[2]: 1.2版本说明
[3]: 1.3版本说明
[4]: 不兼容的变更 0.96 > 1.0
[5]: 不兼容的变更 0.96 > 1.0
[6]: 多个数据库