Я начинаю новый (фактически очень старый) проект, который, как я знаю, находится в Django. Я теряюсь, зная точную версию Django, на которой она была основана. Есть ли способ узнать версию Django, на которой запущено мое приложение?
Получить версию Django для приложения
Ответ 1
Единственный способ - угадать. Я бы начал с рассмотрения созданной даты файла 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]: Назад Несовместимые изменения 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)
Ответ 5
https://docs.djangoproject.com/en/1.7/intro/tutorial01/:
python -c "import django; print(django.get_version())"
который получает от меня следующее:
1.7.1