获取应用程序的Django版本

问题描述 投票:19回答:5

我正在启动一个新的(实际上是很旧的)项目,我知道它在Django中。我不知道它已经建立在Django的确切版本上。有什么方法可以知道我的应用程序正在运行的Django版本吗?

python django django-admin django-templates mod-python
5个回答
19
投票

唯一的方法是猜测。我将从查看settings.py文件(或其他基础项目文件)的创建日期开始]

版本发布日期:

  • 1.0:2008年9月。(?)
  • 1.1:2009年7月29日[1]
  • 1.2:2010年5月17日[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


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编写的应用程序仍然可以运行,但是如果您的代码引用的是已弃用或刚刚移动的内容,则可能会在控制台上收到很多弃用警告。

这些警告通常在短期内可以安全地忽略,但是您绝对应该花一些时间通过更新代码以引用其新home / format中的功能来使它们静音。 Django开发人员在做正确的事情方面做得很好,它给了足够的时间,并警告随着时间的流逝,旧功能必须正确迁移。


7
投票

我看到了上面接受的答案,我认为这要容易得多。也许我想念一些东西,但这就是我会做的。

打开在其路径上具有Django项目的python终端。

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

该版本号仅供参考。我希望您的可能有所不同。


0
投票

https://docs.djangoproject.com/en/1.7/intro/tutorial01/

python -c "import django; print(django.get_version())"

使我得到以下内容:

1.7.1

-1
投票

Django 1.7中有效:

import django
django.VERSION

...这将产生(在我的机器上:)>

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

:在运行此虚拟环境之前,必须确保在python虚拟环境中运行,这一点很重要,否则您将导入系统范围的Django,而不是项目级别的。
© www.soinside.com 2019 - 2024. All rights reserved.