O url patterns foi feito para mapear rotas dentro da sua aplicação para que
ela saiba que código executar ao receber uma requisição em determinada URL.
Ele não foi feito para fazer redirects externos.
Para isso existe o shortcut redirect [1], a generic view RedirectView [2] e
as classes HttpResponseRedirect (HTTP 302) [3] e
HttpResponsePermanentRedirect (HTTP 301) [4].
Se o que você quer é retornar uma URL externa ao chamar {% url contato %},
o seu problema não é no url patterns e sim na template tag que você está
utilizando. Talvez fazer uma outra template tag que resolva seu problema
seja melhor.
Você pode mapear uma url pra uma view que te redireciona pro link externo.
Eeria uma url normal, apontando pra uma view. Nessa view você faz o
redirect.
Em 26 de maio de 2012 01:03, Vinicius Mendes <vbmen...@gmail.com> escreveu:
> O url patterns foi feito para mapear rotas dentro da sua aplicação para
> que ela saiba que código executar ao receber uma requisição em determinada
> URL. Ele não foi feito para fazer redirects externos.
> Para isso existe o shortcut redirect [1], a generic view RedirectView [2]
> e as classes HttpResponseRedirect (HTTP 302) [3] e
> HttpResponsePermanentRedirect (HTTP 301) [4].
> Se o que você quer é retornar uma URL externa ao chamar {% url contato %},
> o seu problema não é no url patterns e sim na template tag que você está
> utilizando. Talvez fazer uma outra template tag que resolva seu problema
> seja melhor.
Se fizer uma view só pra fazer o redirect, você tá piorando a experiência
do usuário e sobrecarregando seu servidor desnecessariamente. Toda vez que
o usuário clicar no link, ele vai esperar seu servidor responder falando
que é um redirect para poder requisitar a url correta. A não ser que você
tenha algum outro bom motivo para ter essa view, é melhor não fazê-la.
Atenciosamente,
Vinicius Mendes
Engenheiro de Computação
Globo.com
> Você pode mapear uma url pra uma view que te redireciona pro link externo.
> Eeria uma url normal, apontando pra uma view. Nessa view você faz o
> redirect.
> Em 26 de maio de 2012 01:03, Vinicius Mendes <vbmen...@gmail.com>escreveu:
> O url patterns foi feito para mapear rotas dentro da sua aplicação para
>> que ela saiba que código executar ao receber uma requisição em determinada
>> URL. Ele não foi feito para fazer redirects externos.
>> Para isso existe o shortcut redirect [1], a generic view RedirectView [2]
>> e as classes HttpResponseRedirect (HTTP 302) [3] e
>> HttpResponsePermanentRedirect (HTTP 301) [4].
>> Se o que você quer é retornar uma URL externa ao chamar {% url contato
>> %}, o seu problema não é no url patterns e sim na template tag que você
>> está utilizando. Talvez fazer uma outra template tag que resolva seu
>> problema seja melhor.
A melhor forma seria o link direto, uma outra opção seria o direcionamento
pelo dominio mesmo. Mas ele quer poder usar a templatetag 'url', nenhuma
dessas duas soluções vai permitir.
Em 26 de maio de 2012 14:38, Douglas Miranda
<douglasmirandasi...@gmail.com>escreveu:
Posso estar equivocado, mas estou com a sensação de que ele deseja ter um
"banco de links" que podem mudar com certa frequência. Talvez o exemplo do
google.com tenha sido genérico d+.
Se esse for o caso, o que já vi acontecer em CMS onde o usuário deseja ser
capaz de atualizar os links, me parece que no contrib do django tem a app
redirects <https://docs.djangoproject.com/en/dev/ref/contrib/redirects/>que
pode servir de inspiração, apesar de não parecer ser exatamente a
solução desejada.
> A melhor forma seria o link direto, uma outra opção seria o direcionamento
> pelo dominio mesmo. Mas ele quer poder usar a templatetag 'url', nenhuma
> dessas duas soluções vai permitir.
> Em 26 de maio de 2012 14:38, Douglas Miranda <
> douglasmirandasi...@gmail.com> escreveu:
> Há algo que lhe impede de colocar direto no template isto? <a href="
>> http://google.com.br"..
>> Em sexta-feira, 25 de maio de 2012 09h46min31s UTC-4, Hernani Fernandes
>> escreveu:
>>> Olá pessoal,
>>> alguém sabe como poderia criar um redirecionamento externo usando o
>>> url patterns?
>>> ex:
>>> no template colocar algo como
>>> {% url contato %} <- assim toda vez que eu usar isso no template
também acho que seja isso que ele deseja e na verdade para não ter que
atualizar manualmente a url nos templates prefere chamar via uma
templatetag.
Uma solução seria criar outra templatetag para url's externas e adicionar
essas urls em um arquivo ou banco de dados, um model que armazenasse um
nome para a url e o valor por exemplo e usando as fixtures[1] do django
você poderia colocar as urls's
> Posso estar equivocado, mas estou com a sensação de que ele deseja ter um
> "banco de links" que podem mudar com certa frequência. Talvez o exemplo do
> google.com tenha sido genérico d+.
> Se esse for o caso, o que já vi acontecer em CMS onde o usuário deseja ser
> capaz de atualizar os links, me parece que no contrib do django tem a app
> redirects <https://docs.djangoproject.com/en/dev/ref/contrib/redirects/>que pode servir de inspiração, apesar de não parecer ser exatamente a
> solução desejada.
>> A melhor forma seria o link direto, uma outra opção seria o
>> direcionamento pelo dominio mesmo. Mas ele quer poder usar a templatetag
>> 'url', nenhuma dessas duas soluções vai permitir.
>> Em 26 de maio de 2012 14:38, Douglas Miranda <
>> douglasmirandasi...@gmail.com> escreveu:
>> Há algo que lhe impede de colocar direto no template isto? <a href="
>>> http://google.com.br"..
>>> Em sexta-feira, 25 de maio de 2012 09h46min31s UTC-4, Hernani Fernandes
>>> escreveu:
>>>> Olá pessoal,
>>>> alguém sabe como poderia criar um redirecionamento externo usando o
>>>> url patterns?
>>>> ex:
>>>> no template colocar algo como
>>>> {% url contato %} <- assim toda vez que eu usar isso no template
Pelo que eu entendi, o que ele quer é criar um alias para um determinado
link de forma que ele possa trocar o link sem precisar substituir em todos
os lugares que ele foi utilizado. Se a intenção for essa, uma template
tag<https://docs.djangoproject.com/en/1.4/howto/custom-template-tags/>que
receba como parametro uma chave para distinguir o link e obtenha o
link
de um mapeamento resolve o problema. Se existir demanda de alimentar o
mapeamento através de um CMS, faz sentido utilizar a app de redirects. Mas
lembre-se, como o Douglas e o Matheus sugeriram, a não ser que você
realmente tenha essas demandas que mencionei acima, a melhor solução é
utilizar o link diretamente.
Atenciosamente,
Vinicius Mendes
Engenheiro de Computação
Globo.com
> também acho que seja isso que ele deseja e na verdade para não ter que
> atualizar manualmente a url nos templates prefere chamar via uma
> templatetag.
> Uma solução seria criar outra templatetag para url's externas e adicionar
> essas urls em um arquivo ou banco de dados, um model que armazenasse um
> nome para a url e o valor por exemplo e usando as fixtures[1] do django
> você poderia colocar as urls's
>> Posso estar equivocado, mas estou com a sensação de que ele deseja ter um
>> "banco de links" que podem mudar com certa frequência. Talvez o exemplo do
>> google.com tenha sido genérico d+.
>> Se esse for o caso, o que já vi acontecer em CMS onde o usuário deseja
>> ser capaz de atualizar os links, me parece que no contrib do django tem a app
>> redirects <https://docs.djangoproject.com/en/dev/ref/contrib/redirects/>que pode servir de inspiração, apesar de não parecer ser exatamente a
>> solução desejada.
>>> A melhor forma seria o link direto, uma outra opção seria o
>>> direcionamento pelo dominio mesmo. Mas ele quer poder usar a templatetag
>>> 'url', nenhuma dessas duas soluções vai permitir.
>>> Em 26 de maio de 2012 14:38, Douglas Miranda <
>>> douglasmirandasi...@gmail.com> escreveu:
>>> Há algo que lhe impede de colocar direto no template isto? <a href="
>>>> http://google.com.br"..
>>>> Em sexta-feira, 25 de maio de 2012 09h46min31s UTC-4, Hernani Fernandes
>>>> escreveu:
>>>>> Olá pessoal,
>>>>> alguém sabe como poderia criar um redirecionamento externo usando o
>>>>> url patterns?
>>>>> ex:
>>>>> no template colocar algo como
>>>>> {% url contato %} <- assim toda vez que eu usar isso no template