Objetos de Sessão e CherryPy


Por estes dias tive dois percalços no desenvolvimento de um projeto em Django:

1. Qual a “melhor maneira mais rápida” de colocar um pequeno projeto em Django a rodar em produção em uma rede internar ?

Bom, viram que a expressão está entre aspas pois é uma forma de dizer o melhor custo benefício ! hehehe O que ocorria era que eu precisava colocar um pequeno sistema Django no ar, na rede interna, que não dependesse de muitas coisas, principalmente um Apache ou library. Então procurei algumas opções e achei basicamente 1: CherryPy

O CherryPy é um servidor de aplicações puramente Python, e que como vi alguns dizer por ai, é o mais “paythonico” de todos. Cheguei a ele através do django-cpserver, que é um addon aos comandos do manage.py, que roda a aplicação através do WSGI server do CherryPy. Não sei se é a melhor forma de servir meu projeto Django em um servidor interno, que não terá obviamente um acesso quenem o do twitter, mas tento fazer da melhor forma possível

Bom, para funcionar, baixe e instale o CherryPy.

Depois baixe o django-cpserver, e coloque-o em seu PYTHON_PATH ( eu coloquei dentro do diretorio do meu projeto Django ) e adicione-o às INSTALLED_APPS.

Pronto agora basta rodar o comando abaixo para tê-lo rodando via WSGI do CherryPy:

python manage.py runcpserver

Para alterar a porta por exemplo rode:

python manage.py runcpserver port=80

E para mais informações rode:

python manage.py runcpserver help

Aqui e Aqui tem mais informações sobre os frameworks e sobre o CherryPy tb.

2. Como efetuar um redirecionamento nas views do Django passando alguns parametros por POST ?

Descobri que não tem como! Pelo pouco que entendi é inclusive uma restrição do protocolo HTTP e não do Django.

Então, utilizei a sessão para passar algumas informações necessárias na minha view, exemplo uma mensagem…

Vamos ao código:

def index(request):
    #pega o parametro da sessão
    mensagem = request.session.get('mensagem','')
    #retira o parametro da sessão para que não fique para o proximo request
    try:
        del request.session['mensagem']
    except KeyError:
        pass
    #retorna os dados.. no template terá disponível a variavel 'msg' com a mensagem a ser mostrada.
    return render_to_response('index.html', {'msg': mensagem}, context_instance=RequestContext(request))

def salvar_exemplo(request):
    info = Dados.objects.get(id=request.POST['id'])
    #.... tratamento das informações
    request.session['mensagem'] = 'minha mensagem de retorno'
    return HttpResponseRedirect('/index/')

E assim, resolvi meu problema..

Anúncios

3 Comments

  1. Bacana, Sergio!

    Estou estudando o CherryPy, ele pode funcionar perfeitamente sozinho com uma pequena aplicação, ou estou enganada?

    Preciso desenvolver um pequeno sistema, sendo que o Django tem muitos recursos que eu não precisarei e então fiquei preocupada com a escalabilidade. De qualquer forma, já tentou usar o CherryPy com uma biblioteca ORM? O que acha?

    🙂

    Curtir

    Responder

    1. Oi Claudia!
      Pode sim, ele é um servidor de aplicações e lhe dá o que é necessário para agregar outros frameworks também ou trabalhar somente com ele !
      É uma ótima opção !
      Assim como o Flask também !

      Curtir

      Responder

      1. Não conhecia o Flask, mas achei bem interessante.
        Vou testá-lo também para ver como se comporta.

        Valeu as dicas, Sergio!

        Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s