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.

Foi útil?

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 ...
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top