Pregunta

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 puedo cambiar a la versión oficial (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 (uno para cada aplicación).

~/local/lib/python2.6/site-packages/ está en el camino pitón.

Dentro /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 a django.core.servers.fastcgi.runfastcgi. Un archivo .htaccess se utiliza para redirigir todas las peticiones a dispatch.fcgi para que Django puede manejarlos.

He intentado quitar (que se mueve fuera de la trayectoria de pitón) /django/ y luego descargar la versión de Django y ponerlo donde estaba la carpeta /django/ anterior. Esto produjo el error siguiente:

  

Sin módulo denominado CSRF.

He descargado middleware/csrf.py de /trunk/ que despejó el primer error, pero luego se producen otros errores.

¿Cómo debo ir sobre la degradación hasta la 1.1? Partiendo de cero no está fuera de la cuestión, pero me gustaría, obviamente, en lugar de evitar esto si es posible.

¿Fue útil?

Solución 2

He conseguido rebajar con éxito y en realidad es un proceso muy fácil. Esperamos que esto ayudará a la gente 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 a la versión de desarrollo actual.

startproject con la liberación dev actual tiene una clase middleware adicional - csrf. El comando startproject en 1.1.1 crea el mismo settings.py pero con la tercera clase eliminado. Comentando o retirar esta línea se hace 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',
)

Otros consejos

buscar en el Directorio /site-packages/ para archivos y borrar cualquier Django-1.other_stuff.egg-info 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 desde la última versión tar (setup.py instalar Python) y usted debe ser bueno.

Como alternativa, si ha PIP instalado probablemente puede hacer pip install -U Django==1.1.1 en el terminal.

Tenga en cuenta el D de capital en Django en esos archivos de huevo información y el comando pip.

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

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

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

Esto asegurará que Django se carga desde su instalación, no el ancho-servidor.

También deberá modificar su shell variable de ruta del entorno por lo 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 ...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top