Come effettuare il downgrade da Django dev a 1,1
Domanda
Sono in esecuzione la versione di sviluppo di Django e sembra che l'applicazione filebrowser non è compatibile con il tronco a causa delle modifiche apportate al CSRF. Come faccio a eseguire il downgrade alla versione ufficiale (1.1)?
Sto lavorando su un host condiviso e il modo in cui sto facendo funzionare curently Django è la seguente:
~/local/lib/python2.6/site-packages/
contiene /django/
così come diverse altre cartelle (una per ogni app).
~/local/lib/python2.6/site-packages/
è sulla strada pitone.
All'interno /site-packages/
c'è anche un link simbolico a /projectname/
che contiene i file di progetto (manage.py, settings.py, ecc.).
Sto usando FastCGI e quindi in /public_html/
Ho un dispatch.fcgi
che viene utilizzato per chiamare django.core.servers.fastcgi.runfastcgi
. Un file .htaccess
viene utilizzato per reindirizzare tutte le richieste a dispatch.fcgi in modo che Django in grado di gestirli.
Ho provato a rimuovere (trasferirsi al di fuori del percorso di pitone) /django/
e poi scaricando la versione di Django e metterlo in cui la cartella /django/
precedente era. Ciò ha prodotto il seguente errore:
Nessun modulo chiamato CSRF.
Ho scaricato middleware/csrf.py
da /trunk/
che chiarito il primo errore, ma poi prodotto altri errori.
Come devo fare per il downgrade a 1,1? A partire da zero non è fuori questione, ma mi piacerebbe, ovviamente, piuttosto evitare questo, se possibile.
Soluzione 2
Sono riuscito a downgrade con successo e in realtà è un processo estremamente semplice. Speriamo che questo aiuterà le persone fuori che trascurare quello che ho fatto.
Il comando startproject
di django-admin.py in 1.1.1 crea un file settings.py leggermente diverso rispetto alla versione di sviluppo attuale.
startproject
in con il rilascio dev corrente ha una classe di middleware aggiuntivo - CSRF. Il comando startproject nella 1.1.1 crea lo stesso settings.py ma con la terza classe rimosso. Commentando fuori o rimozione di questa linea diventa Django funziona correttamente.
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', #additional middleware class
'django.contrib.auth.middleware.AuthenticationMiddleware',
)
Altri suggerimenti
Cercare nella directory per i file /site-packages/
Django-1.other_stuff.egg-info
e cancellazione delle trovate, quindi provare di nuovo (con il codice per il 1.1 ancora nella directory site-packages/django/
. Se questo non funziona, appena ri-eseguire il programma di installazione Django dalla ultima release tarball (installare python setup.py) e si dovrebbe essere buono.
In alternativa, se avete pip installato probabilmente si può fare solo pip install -U Django==1.1.1
nel terminale.
Si noti la D
capitale Django
in quei file uovo-info e il comando pip.
si può semplicemente installare Django della versione che si desidera in voi spazio utente, dice in / home / me / lib /
allora se si utilizza mod_wsgi in mysite.wsgi avere una linea:
sys.path.insert(0,'/home/me/lib/Django-1.1')
Questo assicurerà che Django è caricato dall'installazione, non il server a livello.
avrete anche bisogno di regolare la variabile PATH ambiente di shell in modo che corretto django-admin.py è lanciato o semplicemente eseguire direttamente
python /home/me/lib/Django-1.1/django/bin/django-admin.py ...