Получить версию Django для приложения - PullRequest
19 голосов
/ 30 июня 2011

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

Ответы [ 5 ]

19 голосов
/ 30 июня 2011

Единственный способ - угадать.Я бы начал с просмотра даты создания файла 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]: Несколько баз данных

11 голосов
/ 30 июня 2011

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

7 голосов
/ 30 июня 2011

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

Откройте терминал Python, на пути которого находится проект Django.

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

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

0 голосов
/ 05 марта 2015

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

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

, что дает мне следующее:

1.7.1
0 голосов
/ 03 сентября 2014

Это работает в Джанго 1,7:

import django
django.VERSION

... что дает (на моей машине):

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