我正在启动一个新的(实际上是很旧的)项目,我知道它在Django中。我不知道它已经建立在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 +。
[4]:Backwards Incompatible changes 0.96 > 1.0
您可以根据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编写的应用程序仍然可以运行,但是如果您的代码引用的是已弃用或刚刚移动的内容,则可能会在控制台上收到很多弃用警告。
这些警告通常在短期内可以安全地忽略,但是您绝对应该花一些时间通过更新代码以引用其新home / format中的功能来使它们静音。 Django开发人员在做正确的事情方面做得很好,它给了足够的时间,并警告随着时间的流逝,旧功能必须正确迁移。
我看到了上面接受的答案,我认为这要容易得多。也许我想念一些东西,但这就是我会做的。
打开在其路径上具有Django项目的python终端。
$ python
>>> import django
>>> print django.get_version()
0.97-pre-SVN-7668
该版本号仅供参考。我希望您的可能有所不同。
https://docs.djangoproject.com/en/1.7/intro/tutorial01/:
python -c "import django; print(django.get_version())"
使我得到以下内容:
1.7.1
在Django 1.7中有效:
import django
django.VERSION
...这将产生(在我的机器上:)>
:在运行此虚拟环境之前,必须确保在python虚拟环境中运行,这一点很重要,否则您将导入系统范围的Django,而不是项目级别的。(1, 7, 0, 'rc', 3)
注