Diferença entre reverse e reverse_lazy

962 views
Skip to first unread message

Régis Silva

unread,
Sep 2, 2015, 8:01:48 AM9/2/15
to django...@googlegroups.com
Qual a Diferença entre reverse e reverse_lazy?

Regis da Silva
Web Developer 

Aboutme Linkedin github

Fabio C. Barrionuevo da Luz

unread,
Sep 2, 2015, 8:14:48 AM9/2/15
to django...@googlegroups.com
Em uma explicação simplista:

reverse processa e devolve a url imediatamente,
reverse_lazy devolve imediatamente uma função de avaliação tardia, que irá processar a url somente quando o dado for ser utilizado/visualizado. Funciona da mesma forma que os Querysets do django, ou seja, os Querysets do django só vão executar a SQL no banco de dados quando você tentar utilizar/visualizar algum dado (coluna).


Me corrijam se falei algo errado.


--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Fábio C. Barrionuevo da Luz
Acadêmico de Sistemas de Informação na Faculdade Católica do Tocantins - FACTO
Palmas - Tocantins - Brasil - América do Sul


Blog colaborativo sobre Python e tecnologias Relacionadas, mantido totalmente no https://github.com/pythonclub/pythonclub.github.io .

Todos são livres para publicar. É só fazer fork, escrever sua postagem e mandar o pull-request. Leia mais sobre como publicar em README.md e contributing.md.
Regra básica de postagem:
"Você" acha interessante? É útil para "você"? Pode ser utilizado com Python ou é útil para quem usa Python? Está esperando o que? Publica logo, que estou louco para ler...

Rafael dos Santos Gonçalves

unread,
Sep 2, 2015, 8:23:32 AM9/2/15
to django...@googlegroups.com
Basicamente a diferença é que o reverse_lazy é o reverse com implementação Lazy. Lazy não é executado até o valor ser requisitado diferente do primeiro que é executado no momento de interpretação.

Acho que é isso :D

abs

Em 2 de setembro de 2015 09:01, Régis Silva <regis.sa...@gmail.com> escreveu:

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Rafael dos Santos Gonçalves
Ramal - 6757

Eduardo Klosowski

unread,
Sep 2, 2015, 8:37:24 AM9/2/15
to django...@googlegroups.com
É isso mesmo. Só explicando o motivo disso ser importante.

Se você precisar resolver uma url antes de processar o urls.py, ela
simplesmente não funcionará, pois não criou os patterns ainda. A solução
é usar o lazy, que só irá resolver a url quando o valor for utilizado,
que provavelmente será depois de processar o urls.py.

Um exemplo seria no settings, o LOGIN_URL, se você usar o reverse,
provavelmente vai dar erro já que o urls.py ainda não foi lido. Usando o
reverse_lazy, como a url não será resolvida naquele momento, não da erro
e só quando for usado o LOGIN_URL que será avaliado.

Antigamente existia um problema com os forms, você poderia utilizar
internacionalização para os labels dos campos, porém se fosse definido o
idioma conforme o usuário, como a classe do form já tinha sido definida,
ele traduzia o site inteiro menos o form. Para resolver esse problema
troca-se o ugettext por ugettext_lazy, que funciona da mesma forma porém
faz a internacionalização quando for exibir o label, e não na definição
da classe. O reverse e reverse_lazy também seguem a mesma lógica,
podendo pré-processar uma coisa que não foi definida ou que pode ser
alterada dinamicamente.

Blog: https://eduardoklosowski.wordpress.com/
GitHub: https://github.com/eduardoklosowski/

Em 02-09-2015 09:14, Fabio C. Barrionuevo da Luz escreveu:
> Em uma explicação simplista:
>
> *reverse* processa e devolve a url imediatamente,
> *reverse_lazy* devolve imediatamente uma função de avaliação tardia, que
> irá processar a url somente quando o dado for ser utilizado/visualizado.
> Funciona da mesma forma que os Querysets do django, ou seja, os
> Querysets do django só vão executar a SQL no banco de dados quando você
> tentar utilizar/visualizar algum dado (coluna).
>
>
> Me corrijam se falei algo errado.
>
>
> Em 2 de setembro de 2015 09:01, Régis Silva <regis.sa...@gmail.com
> <mailto:regis.sa...@gmail.com>> escreveu:
>
> Qual a Diferença entre reverse e reverse_lazy?
>
> Regis da Silva
> Web Developer
>
> Aboutme <https://about.me/rg3915>Linkedin
> <https://www.linkedin.com/profile/public-profile-settings?trk=prof-edit-edit-public_profile>github
> <https://github.com/rg3915>
>
> --
> Você recebeu essa mensagem porque está inscrito no grupo "Django
> Brasil" dos Grupos do Google.
> Para cancelar inscrição nesse grupo e parar de receber e-mails dele,
> envie um e-mail para django-brasi...@googlegroups.com
> <mailto:django-brasi...@googlegroups.com>.
> Para mais opções, acesse https://groups.google.com/d/optout.
>
>
>
>
> --
> Fábio C. Barrionuevo da Luz
> Acadêmico de Sistemas de Informação na Faculdade Católica do Tocantins -
> FACTO
> Palmas - Tocantins - Brasil - América do Sul
>
> http://pythonclub.com.br/
>
> Blog colaborativo sobre Python e tecnologias Relacionadas, mantido
> totalmente no https://github.com/pythonclub/pythonclub.github.io .
>
> Todos são livres para publicar. É só fazer fork, escrever sua postagem e
> mandar o pull-request. Leia mais sobre como publicar em README.md e
> contributing.md <http://contributing.md/>.
> Regra básica de postagem:
> "Você" acha interessante? É útil para "você"? Pode ser utilizado com
> Python ou é útil para quem usa Python? Está esperando o que? Publica
> logo, que estou louco para ler...
>
> --
> Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil"
> dos Grupos do Google.
> Para cancelar inscrição nesse grupo e parar de receber e-mails dele,
> envie um e-mail para django-brasi...@googlegroups.com
> <mailto:django-brasi...@googlegroups.com>.

Régis Silva

unread,
Sep 2, 2015, 8:46:39 AM9/2/15
to Django Brasil
É isso ai pessoal, aprendendo uns com os outros. Valeu.

Regis da Silva
Web Developer 

Reply all
Reply to author
Forward
0 new messages