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.

Était-ce utile?

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 ...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top