Comment déclasser Django dev à 1.1
Question
Je suis en cours d'exécution de la version de développement de Django et il semble que l'application n'est pas compatible navigateur de fichiers avec le tronc en raison des modifications apportées à CSRF. Comment puis-je revenir à la version officielle (1.1)?
Je travaille sur un hébergement mutualisé et la façon dont je suis en cours d'exécution curently Django est la suivante:
~/local/lib/python2.6/site-packages/
contient /django/
ainsi que plusieurs autres dossiers (un pour chaque application).
~/local/lib/python2.6/site-packages/
est sur le chemin de python.
Dans /site-packages/
il y a aussi un lien symbolique vers /projectname/
qui contient les fichiers de projet (manage.py, settings.py, etc.).
J'utilise FastCGI et donc je /public_html/
un dispatch.fcgi
qui est utilisé pour appeler django.core.servers.fastcgi.runfastcgi
. Un fichier .htaccess
est utilisé pour rediriger toutes les requêtes vers dispatch.fcgi afin que Django peut les manipuler.
J'ai essayé de supprimer (sortir du chemin de python) /django/
puis télécharger la version de Django et de le mettre où le dossier précédent était /django/
. Ce produit l'erreur suivante:
Aucun module nommé CSRF.
J'ai téléchargé middleware/csrf.py
de /trunk/
qui éclaircit la première erreur mais produit d'autres erreurs.
Comment dois-je aller sur la rétrogradation à 1.1? A partir de zéro ne sont pas hors de question, mais je serais évidemment plutôt d'éviter cela si possible.
La solution 2
J'ai réussi à rétrograder avec succès et il est en fait un processus extrêmement facile. Espérons que cela aidera les gens à qui méconnais ce que je faisais.
La commande startproject
de django-admin.py 1.1.1 crée un fichier settings.py légèrement différent de celui de la version de développement actuelle.
startproject
avec la version actuelle de dev a une classe de middleware supplémentaire - CSRF. La commande startproject 1.1.1 crée le même settings.py mais avec la troisième classe supprimée. Commentant ou suppression de cette ligne obtient Django fonctionne correctement.
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', #additional middleware class
'django.contrib.auth.middleware.AuthenticationMiddleware',
)
Autres conseils
Regardez dans votre répertoire /site-packages/
pour les fichiers Django-1.other_stuff.egg-info
et supprimer tout vous trouvez, puis essayez à nouveau (avec le code 1.1 encore dans le répertoire site-packages/django/
. Si cela ne fonctionne pas, tout simplement ré-exécuter le programme d'installation Django la dernière version tarball (python setup.py install) et vous devriez être bien.
Sinon, si vous avez pip installé vous pouvez probablement le faire pip install -U Django==1.1.1
dans le terminal.
Notez le D
de capital Django
dans les fichiers oeuf-info et la commande pip.
vous pouvez installer simplement django de la version que vous souhaitez en vous l'espace utilisateur, par exemple dans / home / moi / lib /
alors si vous utilisez mod_wsgi dans votre mysite.wsgi une ligne:
sys.path.insert(0,'/home/me/lib/Django-1.1')
assurera que django est chargé de l'installation, pas tout le serveur.
vous aurez également besoin d'ajuster votre variable de chemin d'environnement shell afin que django-admin.py correct est lancé ou il suffit d'exécuter directement
python /home/me/lib/Django-1.1/django/bin/django-admin.py ...