Frage

Ich bin mit der Entwicklerversion von Django und es scheint, dass der Dateibrowser-App mit Stamm wegen Änderungen an CSRF nicht kompatibel ist. Wie Herabstufung mich auf den offiziellen Release (1.1)?

ich auf einem gemeinsamen Host arbeitete und die Art und Weise, dass ich curently Django leite ist wie folgt:

~/local/lib/python2.6/site-packages/ enthält /django/ sowie mehrere andere Ordner (eine für jede app).

~/local/lib/python2.6/site-packages/ ist auf dem Python-Pfad.

Innerhalb /site-packages/ gibt es auch einen symbolischen Link auf /projectname/, die die Projektdateien enthalten (manage.py, settings.py usw.).

Ich bin mit FastCGI und deshalb in /public_html/ habe ich ein dispatch.fcgi, den Anruf django.core.servers.fastcgi.runfastcgi verwendet wird. Eine .htaccess Datei wird verwendet, um alle Anfragen zu dispatch.fcgi umleiten, so dass Django kann mit ihnen umgehen.

Ich habe versucht, zu entfernen (moving aus dem Python-Pfad) /django/ und dann die Release-Version von Django Herunterladen und lege es, wo der vorherige /django/ Ordner war. Dies erzeugt den folgenden Fehler:

  

Kein Modul mit dem Namen CSRF.

Ich heruntergeladen middleware/csrf.py von /trunk/, die den ersten Fehler behoben, aber dann andere Fehler produziert.

Wie soll ich gehen über auf 1,1 Herabstufung? nicht aus der Frage von Grund auf neu ist, aber ich würde natürlich lieber dies vermeiden, wenn möglich.

War es hilfreich?

Lösung 2

Ich habe es geschafft erfolgreich degradieren, und es ist tatsächlich ein extrem einfaches Verfahren. Hoffentlich wird dazu beitragen, die Menschen aus, die übersehen, was ich getan habe.

Der startproject Befehl von django-admin.py in 1.1.1 schafft eine etwas andere settings.py Datei als die aktuelle Entwicklungsversion.

startproject in der aktuellen Entwickler-Release verfügt über eine zusätzliche Middleware-Klasse - csrf. Der Befehl in 1.1.1 startproject erstellt die gleiche settings.py aber mit der dritten Klasse entfernt. Kommentierte oder Entfernen dieser Zeile wird Django richtig funktioniert.

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

Andere Tipps

Schauen Sie in Ihre /site-packages/ Verzeichnis für Django-1.other_stuff.egg-info Dateien und löschen Sie alle Sie, dann versuchen Sie es erneut (mit dem Code für 1.1 noch im site-packages/django/ Verzeichnis. Wenn dies nicht funktioniert, nur das Django-Installationsprogramm von der neuesten Version erneut ausführen Tarball (python setup.py install) und Sie sollten gut sein.

Alternativ, wenn Sie pip installiert wahrscheinlich pip install -U Django==1.1.1 im Terminal nur tun können.

Beachten Sie die Hauptstadt D in Django in diesen Ei-info Dateien und den Pip-Befehl.

Sie können einfach in der Installation von django der Version, die Sie Benutzerraum wollen, sagen in / home / me / lib /

dann, wenn Sie mod_wsgi in Ihrem mysite.wsgi verwenden eine Zeile:

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

Dadurch wird sichergestellt, dass django aus Ihrer Installation geladen, nicht die serverweit.

Sie müssen auch Ihre Shell-Umgebung Pfadvariablen einzustellen, so dass korrekte django-admin.py gestartet wird oder direkt ausführen

python /home/me/lib/Django-1.1/django/bin/django-admin.py ...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top