'invalid request' por hífen em argumentos da URL

81 views
Skip to first unread message

Júlia Rizza

unread,
Jun 6, 2014, 2:03:12 PM6/6/14
to web2py-us...@googlegroups.com
Olá,

Na minha aplicação os usuários tem direito de criar 'boards'. Cada board deve ser acessada por www.dominio.com.br/nome_usuario/slug_board. Isto é definido nas routes por:
BASE = ''
routes_in = (
    (BASE + '/$username/$slug', BASE + '/app/default/board/$username/$slug'),
    )

routes_out = [(x, y) for (y, x) in routes_in]

Isso funciona perfeitamente quando a slug não contém hífens, do contrário me retorna uma 'invalid request'. O web2py naturalmente não aceita hífens em nomes de funções, controllers e apps, porém não existe problema quando são argumentos, como no meu caso. Há algum jeito de corrigir o que está ocorrendo?

Ovidio Marinho

unread,
Jun 6, 2014, 2:49:01 PM6/6/14
to web2py-us...@googlegroups.com
Duas perguntas que queria te fazer, parece que este problema seu é antigo , ou foi outra pessoa que abordou a mesma questão no passado e eu até iniciei uma pesquisa sobre isto , não me lembro o porque abortei: Hifen ou Underline, vc ta usando windows ou linux??? estas eram as duas perguntas.

      


         Ovidio Marinho Falcao Neto
                  ITJP.NET.BR                     
             ovid...@gmail.com
             itjp....@gmail.com
                         Brasil
              


--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-us...@googlegroups.com
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo quot;web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Júlia Rizza

unread,
Jun 6, 2014, 2:59:07 PM6/6/14
to web2py-us...@googlegroups.com
Eu mesma já tive problema com isso antes e inclusive procurei ajuda aqui, mas logo depois tive que abandonar o projeto que estava participando e ninguém nunca me falou sobre uma solução para isso. Agora eis que o problema me persegue novamente.
Estou usando Linux e até agora só verifiquei esse problema ocorrendo com hífens.


Em sexta-feira, 6 de junho de 2014 15h49min01s UTC-3, Ovidio Marinho escreveu:
Duas perguntas que queria te fazer, parece que este problema seu é antigo , ou foi outra pessoa que abordou a mesma questão no passado e eu até iniciei uma pesquisa sobre isto , não me lembro o porque abortei: Hifen ou Underline, vc ta usando windows ou linux??? estas eram as duas perguntas.

      


         Ovidio Marinho Falcao Neto
                  ITJP.NET.BR                     
             ovid...@gmail.com
             itjp....@gmail.com
                         Brasil
              


Em 6 de junho de 2014 15:03, Júlia Rizza <julia...@gmail.com> escreveu:
Olá,

Na minha aplicação os usuários tem direito de criar 'boards'. Cada board deve ser acessada por www.dominio.com.br/nome_usuario/slug_board. Isto é definido nas routes por:
BASE = ''
routes_in = (
    (BASE + '/$username/$slug', BASE + '/app/default/board/$username/$slug'),
    )

routes_out = [(x, y) for (y, x) in routes_in]

Isso funciona perfeitamente quando a slug não contém hífens, do contrário me retorna uma 'invalid request'. O web2py naturalmente não aceita hífens em nomes de funções, controllers e apps, porém não existe problema quando são argumentos, como no meu caso. Há algum jeito de corrigir o que está ocorrendo?

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-us...@googlegroups.com
Para se desinscrever, envie email a: web2py-users-brazil+unsub...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo quot;web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsub...@googlegroups.com.

Ovidio Marinho

unread,
Jun 6, 2014, 3:05:35 PM6/6/14
to web2py-us...@googlegroups.com
Parece que tem uma opção em route.py que se habilita para True , veja isto. http://stackoverflow.com/questions/17505193/renaming-an-application-on-web2py-with-a-hyphen
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo quot;web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.

Ovidio Marinho

unread,
Jun 6, 2014, 3:06:37 PM6/6/14
to web2py-us...@googlegroups.com
quis dizer routes.py.

      


         Ovidio Marinho Falcao Neto
                  ITJP.NET.BR                     
             ovid...@gmail.com
             itjp....@gmail.com
                         Brasil
              


Em 6 de junho de 2014 15:59, Júlia Rizza <julia...@gmail.com> escreveu:
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo quot;web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.

Júlia Rizza

unread,
Jun 6, 2014, 3:11:48 PM6/6/14
to web2py-us...@googlegroups.com
Isso não adiantou no meu caso. Tem algum lugar específico em que eu deva colocar o map_hyphen?
quis dizer routes.py.

Para se desinscrever, envie email a: web2py-users-brazil+unsubscribe...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo quot;web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-brazil+unsubscribe...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Ovidio Marinho

unread,
Jun 6, 2014, 3:16:40 PM6/6/14
to web2py-us...@googlegroups.com
Mais tarde vou ver ok! sobre isto.
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo quot;web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.

Ovidio Marinho

unread,
Jun 7, 2014, 8:49:06 AM6/7/14
to web2py-us...@googlegroups.com
No Book encontrei algo que joga a culpa para o Python. Veja http://web2py.com/books/default/chapter/29/05/the-views procure por "Hyphens"

      


         Ovidio Marinho Falcao Neto
                  ITJP.NET.BR                     
             ovid...@gmail.com
             itjp....@gmail.com
                         Brasil
              


Em 6 de junho de 2014 16:11, Júlia Rizza <julia...@gmail.com> escreveu:
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo quot;web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.

Ovidio Marinho

unread,
Jun 7, 2014, 9:10:17 AM6/7/14
to web2py-us...@googlegroups.com
Usar no routes.py  isto -->
map_hyphen = False 


Júlia Rizza

unread,
Jun 8, 2014, 7:27:48 PM6/8/14
to web2py-us...@googlegroups.com
Olá Ovidio,

Entendo esse problema de Python, mas não vejo o sentido disso afetar a URL por estar nos argumentos. Até porque, quando a função é passada por completo dominio.com/app/default/board/username/nome-com-hifen, tudo funciona normalmente. O problema é que não quero que apareça o nome da função, apenas quero receber os argumentos.

Testei a linha de código também e não mudou em nada, infelizmente.

Diogo Munaro

unread,
Jun 8, 2014, 8:52:48 PM6/8/14
to web2py-us...@googlegroups.com
Qual servidor que você está usando Julia? Prefira sempre usar o roteamento do servidor até para diminuir o trabalho da sua aplicação.


Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo quot;web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.

Júlia Rizza

unread,
Jun 9, 2014, 6:25:44 PM6/9/14
to web2py-us...@googlegroups.com
Por enquanto está em localhost, Diogo. E como assim usar o roteamento do servidor?
Estou usando esse modelo de routes.py porque, até onde sei, é o único que me permite reescrever minhas URLs para o propósito do que eu quero.

Fabiano Almeida

unread,
Jun 9, 2014, 6:46:35 PM6/9/14
to web2py-us...@googlegroups.com
Acredito que o Diogo esteja se referindo a recurso como o VirtualHost do Apache. Se for isto, não sei se funcionaria para tua neessidade.

Sds,

Fabiano.


Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com

Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo quot;web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.

Diogo Munaro

unread,
Jun 9, 2014, 9:55:17 PM6/9/14
to web2py-us...@googlegroups.com

Sim, exatamente... Você pretende hospedar usando rocket? Parece me fazer bastante sentido utilizar o .htaccess do apache ou as totas do ngix se quiser fazer roteamento.

Só dando outra alternativa que não necessita de modificações na sua aplicação

Júlia Rizza

unread,
Jun 10, 2014, 8:18:01 PM6/10/14
to web2py-us...@googlegroups.com
Ainda não tinha considerado utilizar nada disso. Para solução local, que ainda vai levar um longo tempo, não há nenhum modo de fazer isso pelo web2py?

Leandro Paz

unread,
Sep 6, 2018, 5:12:26 PM9/6/18
to web2py-users-brazil
Boa Noite, estou com o mesmo problema dos hifens nos argumentos do arquivo de rota. 

Alguém tem alguma solução.

#######################
default_application='Eventos'

routes_in = (
  ('/eventos/$argumento', '/'+default_application +'/participante/evento/$argumento'),
)
routes_out = (
  ('/'+default_application +'/participante/evento/$argumento', '/eventos/$argumento'),
)

#######################

Leandro Paz

unread,
Sep 28, 2018, 8:10:19 AM9/28/18
to web2py-users-brazil
Como não obtive solução para o problema do hífen e do underline ajustei o sistema com um validator para o campo responsável pelo argumento não aceitar estes caracteres. Segue validator:

#####################
dbevento.id_url.requires=IS_EMPTY_OR([IS_SLUG(maxlen=50),CLEANUP(r'-'), IS_LOWER(),IS_NOT_IN_DB(db, 'evento.id_url', error_message='Este final de URL já foi cadastrado por outro evento')])
#####################
Reply all
Reply to author
Forward
0 new messages