2009-11-11 11 views
6

estoy corriendo la versión de desarrollo de Django y parece que la aplicación de navegador de archivos no es compatible con el tronco, debido a los cambios realizados en CSRF. ¿Cómo cambio a la versión oficial (1.1)?Cómo rebajar Django desde dev a 1,1

estoy trabajando en un servidor compartido y la forma en que estoy corriendo Curently Django es el siguiente:

~/local/lib/python2.6/site-packages/ contiene /django/, así como varias otras carpetas (una para cada aplicación).

~/local/lib/python2.6/site-packages/ está en la ruta de pitón.

Dentro de /site-packages/ también hay un enlace simbólico a /projectname/ que contiene los archivos de proyecto (manage.py, settings.py, etc.).

Estoy usando FastCGI y por lo tanto en /public_html/ tengo un dispatch.fcgi que se utiliza para llamar al django.core.servers.fastcgi.runfastcgi. Un archivo .htaccess se utiliza para redirigir todas las peticiones a dispatch.fcgi para que Django puede manejarlos.

Intenté eliminar (moverme de la ruta de Python) /django/ y luego descargar la versión de lanzamiento de Django y ponerla donde estaba la carpeta anterior /django/. Esto produjo el siguiente error:

No module named CSRF.

he descargado desde middleware/csrf.py/trunk/ que despejó el primer error, pero luego producido otros errores.

¿Cómo debo ir sobre la degradación hasta 1.1? Empezar de cero no está fuera de discusión, pero obviamente evitaría esto si fuera posible.

Respuesta

1

he conseguido rebajar con éxito y en realidad es un proceso muy fácil. Espero que esto ayude a las personas que pasan por alto lo que hice.

El comando startproject de django-admin.py en 1.1.1 crea un archivo settings.py ligeramente diferente de la versión de desarrollo actual.

startproject con la liberación dev corriente tiene una clase middleware adicional - csrf. El comando startproject en 1.1.1 crea el mismo settings.py pero con la tercera clase eliminada. Al comentar o eliminar esta línea, Django funciona correctamente.

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', #additional middleware class 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
) 
8

buscar en el Directorio de /site-packages/Django-1.other_stuff.egg-info archivos y borrar cualquier a encontrar, a continuación, inténtelo de nuevo (con el código de 1.1 todavía en el directorio site-packages/django/. Si esto no funciona, simplemente volver a ejecutar el programa de instalación de Django de la última liberación archivo tar (setup.py instalar Python) y usted debe ser bueno.

Alternativamente, si usted tiene pip installed probablemente puede hacer pip install -U Django==1.1.1 en el terminal.

Nota capital D en Django en los huevos información archivos y el comando pip

+0

Usando pitón setup.py install está fuera de la cuestión por desgracia como yo no tengo suficientes derechos para editar nada dentro de/usr/(Solo puedo modificar/home/username/ –

+0

Olvidé agregar: tampoco había archivos .egg. –

+0

¿Con qué versión de Django creaste el proyecto? creado el proyecto con trunk, empiece de nuevo utilizando 1.1 asumiendo que no ha llegado demasiado lejos. Hay cambios en la configuración predeterminada.py (en particular, cargando el nuevo middleware CSRF) que no funcionará con la versión anterior de Dj ango En una nota aparte, debe considerar el uso de virtualenvs con su host (http://pypi.python.org/pypi/virtualenv) para aislar y controlar mejor su entorno. –

1

sólo puede instalar Django de la versión que desea que en el espacio de usuario, por ejemplo en/home/me/lib/

continuación, si está utilizando mod_wsgi en su mysite.wsgi tiene una línea:

sys.path.insert(0,'/home/me/lib/Django-1.1') 

esto asegurará que django se cargue desde su instalación, no en todo el servidor.

también tendrá que ajustar su shell variable de ruta del entorno de manera que se pone en marcha django-admin.py correcta o simplemente ejecutar directamente

python /home/me/lib/Django-1.1/django/bin/django-admin.py ... 
+0

Este es un excelente "lo mejor de ambos mundos", lo que me permite utilizar el último Django para las aplicaciones que lo soportan sin romper aquellas que aún no se han actualizado. – Lake

Cuestiones relacionadas