É 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>.