Daniel França | 1 Aug 2010 03:17
Picon
Gravatar

Django can't adapt error

Olá,
Eu migrei recentemente um projeto que eu estava fazendo no Linux para o Mac OS
porém estou recebendo uma mensagem de erro: can't adapt type 'US/Eastern'

assim que tento me "cadastrar" na base de dados do projeto pela pagina
em Django.
O banco de dados é Postgresql com psycopg2, tentei alterar o TIME_ZONE
para 'America/Sao_Paulo', mas o mesmo erro continua acontecendo.
Testei diversas outras possibilidades de time zone, e o mesmo erro.

Alguem sabe oque pode ser isso?

Att,
Daniel França

--

-- 
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

Vinicius Mendes | 2 Aug 2010 15:00
Picon
Gravatar

Re: Django can't adapt error

Tenta apagar os pyc. Eles são compilados para o sistema operacional, e se você estiver tentando usar os pyc's compilados no linux para o Mac OS pode dar esse problema.


Atenciosamente,
Vinicius Mendes
Solucione Sistemas
vinicius <at> solucione.info


2010/7/31 Daniel França <daniel.franca-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Olá,
Eu migrei recentemente um projeto que eu estava fazendo no Linux para o Mac OS
porém estou recebendo uma mensagem de erro: can't adapt type 'US/Eastern'

assim que tento me "cadastrar" na base de dados do projeto pela pagina
em Django.
O banco de dados é Postgresql com psycopg2, tentei alterar o TIME_ZONE
para 'America/Sao_Paulo', mas o mesmo erro continua acontecendo.
Testei diversas outras possibilidades de time zone, e o mesmo erro.

Alguem sabe oque pode ser isso?

Att,
Daniel França

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>
Vinicius Mendes | 2 Aug 2010 15:14
Picon
Gravatar

Re: Apagar comentarios

O comentário tem a referência do autor, e o request tem a referencia do usuario logado. Se eles forem iguais, você deixa alterar.

Atenciosamente,
Vinicius Mendes
Solucione Sistemas
vinicius-dYrI4oGu/CuVuoF9d8nMAg@public.gmane.org


2010/7/30 Saulo Chaves <saulodahmer-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
No blog q estou tentando desenvolver o usuário precisa estar logado
para comentar nos posts.
Estou precisando q seja possível q o usuário possa apagar seus posts.
Isso é possível?
Vasculhei toda a documentação do framework de comentários do Djamgo e
o máximo q achei foi
criar um perfil de moderador de comentários e ele poder apagar
qualquer post,mas nada sobre
ser possível o próprio usuário apagar seus comentarios

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>
Django Robot | 2 Aug 2010 18:18
Picon

Dúvida sobre get_object_or_404 e Models.objects.get()

Olá a todos!
Tenho a seguinte dúvida: estou verificando se alguns dados existem no
banco de dados usando:

teste = get_object_or_404(Tabela, laranja='madura')
teste = Tabela.objects.get(laranha='madura')

A primeira retorna página 404 e a segunda um erro informado pelo
django, pois não existem laranjas maduras.
A questão é: Qual a necessidade de uma ou outra? Vejo ambas inúteis
para o cliente final, já que não quero que apresente erro algum. E
para não aparecer eu teria que usar:

try:
    teste = get_object_or_404(Tabela, laranja='madura')
    return HttpResponse("laranja encontrada")
except:
    return HttpResponse("não foi encontradas laranjas maduras")

Não há nenhum jeito melhor de retornar isso? se não encontrar nada
apenas teste = False e pronto?
tipo:

teste = get_object_or_False(Tabela, laranja='madura')
if teste:
    return HttpResponse("laranja encontrada")
else:
    return HttpResponse("não foi encontradas laranjas maduras")

Vejo mais vantagens utilizando assim pois quando começa a ter vários
try dentro try, o código começa a ficar sujo, já não sabe as vezes da
onde vem o erro. Se retornasse apenas false eu ainda poderia utilizar
a variável para outras coisas também.

Alguém se manifesta? get_object_or_404 ou Tabela.objects.get()

--

-- 
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

Gileno Alves | 2 Aug 2010 18:45
Picon
Gravatar

Re: Dúvida sobre get_object_or_404 e Models.objects.get()

Se você não deseja receber erro utilize o:

laranja = Tabela.objects.filter(laranja='madura')
vai retornar uma queryset e dai você testa se veio algo e pega a primeira. 
Sobre o uso do try, fique ciente que você acha que fica sujo alguns programadores preferem visualizar o erro assim e no caso do get_object_or_404 acho bastante útil porque em geral esse problema so aparecere comigo quando um usuário coloca a url direta sem acessar links dentro do site e utilizando páginas 404 personalizadas não preciso ficar criando respostas quando um objeto não é encontrado para todas a views.


2010/8/2 Django Robot <djangomailsender-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Olá a todos!
Tenho a seguinte dúvida: estou verificando se alguns dados existem no
banco de dados usando:

teste = get_object_or_404(Tabela, laranja='madura')
teste = Tabela.objects.get(laranha='madura')

A primeira retorna página 404 e a segunda um erro informado pelo
django, pois não existem laranjas maduras.
A questão é: Qual a necessidade de uma ou outra? Vejo ambas inúteis
para o cliente final, já que não quero que apresente erro algum. E
para não aparecer eu teria que usar:

try:
   teste = get_object_or_404(Tabela, laranja='madura')
   return HttpResponse("laranja encontrada")
except:
   return HttpResponse("não foi encontradas laranjas maduras")

Não há nenhum jeito melhor de retornar isso? se não encontrar nada
apenas teste = False e pronto?
tipo:

teste = get_object_or_False(Tabela, laranja='madura')
if teste:
   return HttpResponse("laranja encontrada")
else:
   return HttpResponse("não foi encontradas laranjas maduras")

Vejo mais vantagens utilizando assim pois quando começa a ter vários
try dentro try, o código começa a ficar sujo, já não sabe as vezes da
onde vem o erro. Se retornasse apenas false eu ainda poderia utilizar
a variável para outras coisas também.

Alguém se manifesta? get_object_or_404 ou Tabela.objects.get()

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>



--
Abraços
Gileno Filho

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>
George Ribeiro | 2 Aug 2010 18:46
Picon

Re: Dúvida sobre get_object_or_404 e Models.objects.get()

Oi Django Robot,

Pelo que eu entendo o get_object_or_404 tenta encontrar a query especifica, caso
não encontre levanta um erro 404 de página não encontrada. Ele serve
como um atalho para não ter
que testar se a query passada é vazia e depois levantar um 404 caso verdadeiro.

O Tabela.objects.get() serve para pegar um objeto especifico no banco,
caso não encontre ele
chama o erro DoesNotExist que não é tratado e por isso chama uma página de erro.

Como o get_object_or_404 é apenas um atalho, encontrado em
django.shortcuts não por acaso, você
pode muito bem construir o seu get_object_or_false.

Obs: cuidado com o Tabela.objects.get(laranja='madura'), pois ele
busca apenas uma ocorrência da query. Se ele
encontrar, por exemplo, mas de uma laranja 'madura' ele retorna um
erro MultipleObjectsReturned.

--

-- 
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

Osvaldo Santana | 2 Aug 2010 18:47
Gravatar

Re: Dúvida sobre get_object_or_404 e Models.objects.get()

Oi Robô Django,

2010/8/2 Django Robot <djangomailsender-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Olá a todos!
Tenho a seguinte dúvida: estou verificando se alguns dados existem no
banco de dados usando:

teste = get_object_or_404(Tabela, laranja='madura')
teste = Tabela.objects.get(laranha='madura')

A primeira retorna página 404 e a segunda um erro informado pelo
django, pois não existem laranjas maduras.
A questão é: Qual a necessidade de uma ou outra? Vejo ambas inúteis
para o cliente final, já que não quero que apresente erro algum. E
para não aparecer eu teria que usar:

try:
   teste = get_object_or_404(Tabela, laranja='madura')
   return HttpResponse("laranja encontrada")
except:
   return HttpResponse("não foi encontradas laranjas maduras")

Não há nenhum jeito melhor de retornar isso? se não encontrar nada
apenas teste = False e pronto?

São várias questões aqui:

1. Se o usuário acessa uma URL que aponta para um recurso (Laranjas) que não existe
o correto é retornar um erro HTTP 404 (Not Found). É assim que o HTTP e, consequentemente,
a Web funcionam. Quer você queira ou não. A mensagem exibida na sua página 404 pode
(deve?) ser personalizada para ficar "ao gosto do freguês" mas o código de retorno HTTP deve
ser 404.

2. A função get_object_or_404() é um atalho para o código:

   try:
      obj = Tabela.get(pk=1)
   except Tabela.DoesNotExist:
      raise Http404("...")

3. Não tenha medo de usar o sistema de exceções do Python. O modo "pythonico" de lidar com
uma exceção (ex. acessar um objeto que não existe) é com try/except e não com 'if ...'. Então o
código acima é melhor do que:

   objs = Tabela.filter(pk=1)
   if not objs:
      raise Http404() # ou incorretamente fazer return HttpResponse("erro")

... esse modo de trabalhar é usado em linguagens de programação sem suporte a tratamento de
exceções ou com um suporte limitado/mal-implementado.

Valeu,
Osvaldo

 
tipo:

teste = get_object_or_False(Tabela, laranja='madura')
if teste:
   return HttpResponse("laranja encontrada")
else:
   return HttpResponse("não foi encontradas laranjas maduras")

Vejo mais vantagens utilizando assim pois quando começa a ter vários
try dentro try, o código começa a ficar sujo, já não sabe as vezes da
onde vem o erro. Se retornasse apenas false eu ainda poderia utilizar
a variável para outras coisas também.

O que você diz sobre "não saber de onde vem o erro" frequentemente é resultado
do tratamento incorreto das exceções. Pessoas que fazem:

try:
  ...
except:
  print "erro!"

ou ainda...

try:
   ...
except Exception:
  print "deu pau!"

estão fazendo esse tratamento da forma errado. Você deve tratar as exceções de nível mais alto
possível (considerando (Base)Exception a exceção de nível mais baixo) e *somente* aquelas
exceções que você saiba tratar (ex. tentar acessar um objeto inexistente deve retornar um erro
404 para o cliente).

No meu blog eu escrevi algumas dicas sobre isso e sobre algumas outras coisas: 


Valeu,
Osvaldo

--
Osvaldo Santana Neto — Triveos Tecnologia
Phone: +55 41 9244-1646


--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>
Django Robot | 2 Aug 2010 21:01
Picon

Re: Dúvida sobre get_object_or_404 e Models.objects.get()

esclareceu bem, vlw a tds.

--

-- 
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

Marcelo Milo | 2 Aug 2010 21:47
Picon
Gravatar

HOSPEDAGEM

ALGUÉM pode me indicar uma empresa de hospedagem em python confiavel e que seja barato ?

agradeçod esde já...
abraços

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>
Diego Henrique Oliveira | 2 Aug 2010 21:50
Picon
Favicon
Gravatar

Re: HOSPEDAGEM

Marcelo,


A dreamhost é barata e tem acesso via shell. Pra rodar python é bem facil, tem tudo documentado na wiki de suporte deles e da pra usar a versão que você quiser.

A unica questão é que não da pra usar WSGI lá, então pra django tem que user o phusion (que é muito bom).

Abraços




Em 2 de agosto de 2010 16:47, Marcelo Milo <beermx-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> escreveu:
ALGUÉM pode me indicar uma empresa de hospedagem em python confiavel e que seja barato ?

agradeçod esde já...
abraços

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

Gmane