Подтвердить что ты не робот

Получить версию Django для приложения

Я начинаю новый (фактически очень старый) проект, который, как я знаю, находится в Django. Я теряюсь, зная точную версию Django, на которой она была основана. Есть ли способ узнать версию Django, на которой запущено мое приложение?

4b9b3361

Ответ 1

Единственный способ - угадать. Я бы начал с рассмотрения созданной даты файла settings.py(или других файлов базового проекта).

Даты выпуска для версий:

  • 1.0: сентябрь 2008. (?)
  • 1.1: 29 июля 2009 г. [1]
  • 1.2: 17 мая 2010 г. [2]
  • 1.3: 23 марта 2011 г. [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 примечания к выпуску

[2]: 1.2 примечания к выпуску

[3]: 1.3 примечания к выпуску

[4]: ​​Назад Несовместимые изменения 0.96 > 1.0

[5]: Назад Несовместимые изменения 0.96 > 1.0

[6]: Несколько баз данных

Ответ 2

Вы можете догадаться, основываясь на способе настройки 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 делают все возможное, чтобы делать правильные вещи, уделяя достаточно времени и предупреждая, что более старые функции должны быть правильно перенесены с течением времени.

Ответ 3

Я вижу ответ, принятый выше, и я думаю, что это намного проще. Может быть, я что-то упустил, но это то, что я буду делать.

Откройте терминал python, на котором есть проект Django.

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

Этот номер версии строго для иллюстрации. На ваш взгляд, может отличаться.

Ответ 4

Это работает в Django 1.7:

import django
django.VERSION

..., который дает (на моей машине):

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