Question

I am running the development version of Django and it appears that the filebrowser app is not compatible with trunk because of changes made to CSRF. How do I downgrade to the official release (1.1)?

I am working on a shared host and the way that I am curently running Django is as follows:

~/local/lib/python2.6/site-packages/ contains /django/ as well as several other folders (one for each app).

~/local/lib/python2.6/site-packages/ is on the python path.

Within /site-packages/ there is also a symlink to /projectname/ that contains the project files (manage.py, settings.py, etc.).

I am using FastCGI and therefore in /public_html/ I have a dispatch.fcgi that is used to call django.core.servers.fastcgi.runfastcgi. A .htaccess file is used to redirect all requests to dispatch.fcgi so that Django can handle them.

I tried removing (moving out of the python path) /django/ and then downloading the release version of Django and putting it where the previous /django/ folder was. This produced the following error:

No module named CSRF.

I downloaded middleware/csrf.py from /trunk/ which cleared up the first error but then produced other errors.

How should I go about downgrading to 1.1? Starting from scratch isn't out of the question but I'd obviously rather avoid this if possible.

Was it helpful?

Solution 2

I have managed to successfully downgrade and it is actually an extremely easy process. Hopefully this will help people out who overlook what I did.

The startproject command of django-admin.py in 1.1.1 creates a slightly different settings.py file than the current development release.

startproject in with the current dev release has an extra middleware class - csrf. The startproject command in 1.1.1 creates the same settings.py but with the third class removed. Commenting out or removing this line gets Django working properly.

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

OTHER TIPS

Look in your /site-packages/ directory for Django-1.other_stuff.egg-info files and delete any you find, then try again (with the code for 1.1 still in the site-packages/django/ directory. If this doesn't work, just re-run the Django installer from the latest release tarball (python setup.py install) and you should be good.

Alternatively, if you have pip installed you can probably just do pip install -U Django==1.1.1 in the terminal.

Note the capital D in Django in those egg-info files and the pip command.

you can just install django of the version you want in you user space, say in /home/me/lib/

then if you are using mod_wsgi in your mysite.wsgi have a line:

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

this will insure that django is loaded from your installation, not the server-wide.

you'll also need to adjust your shell environment path variable so that correct django-admin.py is launched or just run directly

python /home/me/lib/Django-1.1/django/bin/django-admin.py ...
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top