【发布时间】:2011-09-25 16:36:26
【问题描述】:
我正在开始一个新的(实际上很老的)项目,我知道它是在 Django 中。知道它所构建的 Django 的确切版本,我迷失了方向。有没有办法知道我的应用程序正在运行的 Django 版本?
【问题讨论】:
标签: python django django-admin django-templates mod-python
我正在开始一个新的(实际上很老的)项目,我知道它是在 Django 中。知道它所构建的 Django 的确切版本,我迷失了方向。有没有办法知道我的应用程序正在运行的 Django 版本?
【问题讨论】:
标签: python django django-admin django-templates mod-python
唯一的办法就是猜测。我将首先查看 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 编写的应用程序仍然可以运行,但如果您的代码引用了已被弃用或刚刚移动的内容,您可能会在控制台上收到大量弃用警告。
这些警告通常可以在短期内安全地忽略,但您绝对应该花时间通过更新代码以引用新主页/格式中的功能来消除它们。 Django 开发人员在做正确的事情方面做得很好,只要有足够的时间并警告旧功能随着时间的推移正确迁移。
【讨论】:
我看到上面接受的答案,我认为这要容易得多。也许我错过了什么,但这就是我会做的。
打开一个 Python 终端,其路径上有 Django 项目。
$ python
>>> import django
>>> print django.get_version()
0.97-pre-SVN-7668
该版本号仅用于说明。我希望你的可能会有所不同。
【讨论】:
django-admin.py --version获取当前安装的django版本
这适用于Django 1.7:
import django
django.VERSION
...产生(在我的机器上):
(1, 7, 0, 'rc', 3)
注意:重要的是,您需要确保在运行之前在 python 虚拟环境中运行,否则您将导入系统范围的 django,而不是在项目级别。
【讨论】:
https://docs.djangoproject.com/en/1.7/intro/tutorial01/:
python -c "import django; print(django.get_version())"
这让我得到以下信息:
1.7.1
【讨论】:
Django settings for ********** project.
Generated by 'django-admin startproject' using Django 2.0.9.
For more information on this file, see
https://docs.djangoproject.com/en/2.0/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.0/ref/settings/
当你打开 settings.py 文件时,你可以看到上面的 django 版本。
【讨论】: