tutorial para framework python django django-admin django-templates mod-python

python - framework - Consigue la versión de Django para la aplicación.



framework django python (5)

Esto funciona en Django 1.7:

import django django.VERSION

... que rinde (en mi máquina):

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

Estoy empezando un nuevo proyecto (en realidad muy antiguo) que sé que está en Django. Me estoy perdiendo sabiendo la versión exacta de Django sobre la que se ha construido. ¿Hay alguna manera de saber la versión de Django que está ejecutando mi aplicación?


La única manera es hacer una conjetura. Comenzaría observando la fecha de creación del archivo settings.py (u otros archivos de proyecto base)

Fechas de estreno de las versiones:

  • 1.0: septiembre de 2008. (?)
  • 1.1: 29 de julio de 2009 [ 1 ]
  • 1.2: 17 de mayo de 2010 [ 2 ]
  • 1.3: 23 de marzo de 2011 [ 3 ]

Teniendo en tus urls.py: [ 4 ]

from django.conf.urls.defaults import * from django.contrib import admin

o tener un archivo admin.py en una aplicación [ 5 ] sugiere que es un proyecto 1.0+.

Teniendo en tus urls.py: [ 6 ]

(r''^admin/'', include(admin.site.urls)),

sugeriría 1.1+.

Teniendo en su archivo 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'' } }

sugeriría 1.2+.

[1]: 1

[2]: 2

[3]: 3

[4]: 4

[5]: 5

[6]: 6


Puedes adivinar en función de la configuración de settings.py. Su primer consejo sería de la configuración de la base de datos . La forma anterior a Django 1.2 era:

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.

Este método aún se admite hasta 1.3, pero ahora hace que Django se queje en voz alta sobre que está en desuso.

A partir de Django 1.2 se usa el siguiente formato:

DATABASES = { ''default'': { ''ENGINE'': ''django.db.backends.sqlite3'', ''NAME'': os.path.join(PROJECT_DIR, ''mycms.db''), } }

Si bien esto no es definitivo, al menos le da una pista de si su aplicación se escribió antes o después de Django 1.2.

Tenga en cuenta que una aplicación escrita contra una versión anterior de Django aún debería funcionar, pero es probable que reciba muchas advertencias de desaprobación en la consola si su código hace referencia a cosas que han quedado en desuso o simplemente se han movido.

Estas advertencias generalmente se pueden ignorar de manera segura en el corto plazo, pero definitivamente debería tomarse el tiempo para silenciarlas actualizando su código para hacer referencia a las características en su nuevo formato / inicio. Los desarrolladores de Django hacen un buen trabajo al hacer lo correcto en cuanto a dar suficiente tiempo y advertencias para que las funcionalidades más antiguas se migren correctamente a medida que pasa el tiempo.


Veo la respuesta aceptada arriba y creo que es mucho más fácil. Tal vez me esté perdiendo algo, pero esto es lo que haría.

Abra un terminal python que tenga el proyecto Django en su ruta.

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

Ese número de versión es estrictamente para ilustración. El tuyo puede diferir, espero.