Como fazer o downgrade Django de dev para 1,1
Pergunta
Estou executando a versão de desenvolvimento do Django e parece que o aplicativo filebrowser não é compatível com o tronco devido a alterações feitas a CSRF. Como posso fazer o downgrade para o lançamento oficial (1.1)?
Eu estou trabalhando em um servidor compartilhado e da maneira que eu estou curently correndo Django é o seguinte:
~/local/lib/python2.6/site-packages/
contém /django/
, bem como várias outras pastas (uma para cada app).
~/local/lib/python2.6/site-packages/
está no caminho python.
Dentro /site-packages/
há também um link simbólico para /projectname/
que contém os arquivos de projeto (manage.py, settings.py, etc.).
Eu estou usando FastCGI e, portanto, em /public_html/
Eu tenho um dispatch.fcgi
que é usado para django.core.servers.fastcgi.runfastcgi
chamada. Um arquivo .htaccess
é usado para redirecionar todas as solicitações para dispatch.fcgi para que Django pode lidar com eles.
Eu tentei remover (se movendo para fora do caminho python) /django/
e depois de baixar a versão do Django e colocá-lo onde a pasta /django/
anterior era. Isso produziu o seguinte erro:
No módulo chamado CSRF.
Eu transferi middleware/csrf.py
de /trunk/
que esclarecido o primeiro erro, mas, em seguida, produziu outros erros.
Como devo ir sobre a desclassificação para 1,1? Começando do zero não é fora de questão, mas eu, obviamente, prefere evitar isso, se possível.
Solução 2
Eu consegui fazer o downgrade com sucesso e na verdade é um processo extremamente fácil. Esperemos que isto irá ajudar as pessoas que ignoram o que eu fiz.
O comando startproject
de django-admin.py em 1.1.1 cria um arquivo settings.py ligeiramente diferente do que a versão de desenvolvimento atual.
startproject
com o lançamento dev atual tem uma classe middleware adicional - csrf. O comando startproject em 1.1.1 cria o mesmo settings.py mas com a terceira classe removido. Comentando ou remover esta linha fica Django funcionando corretamente.
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', #additional middleware class
'django.contrib.auth.middleware.AuthenticationMiddleware',
)
Outras dicas
Procurar em seu diretório /site-packages/
para arquivos Django-1.other_stuff.egg-info
e excluir qualquer que você encontrar, em seguida, tente novamente (com o código para 1.1 ainda no diretório site-packages/django/
. Se isso não funciona, apenas re-executar o instalador Django a partir da última versão tarball (python setup.py install) e você deve ser bom.
Como alternativa, se você tiver pip instalado provavelmente você pode apenas fazer pip install -U Django==1.1.1
no terminal.
Observe o D
capital Django
naqueles ovo-arquivos info eo comando pip.
você pode simplesmente instalar o Django da versão que você quer em você o espaço do usuário, digamos, em / home / me / lib /
, em seguida, se você estiver usando mod_wsgi em sua mysite.wsgi ter uma linha:
sys.path.insert(0,'/home/me/lib/Django-1.1')
Isto irá assegurar que o Django é carregado a partir de sua instalação, em todo o servidor não o.
Você também vai precisar de ajustar a sua shell variável de caminho ambiente para que django-admin.py correto é lançado ou apenas executar diretamente
python /home/me/lib/Django-1.1/django/bin/django-admin.py ...