2009-10-04 19 views
31

Parece que el solucionador de urls de django realiza la búsqueda de mayúsculas y minúsculas para resolver url y diferenciar entre '/ Login' y 'login'. Mis patrones de URL son los siguientes.Urls insensibles a mayúsculas/minúsculas para Django?

urlpatterns = patterns('', 
    (r'^admin/(.*)', admin.site.root), 
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', 
     {'document_root': settings.STATIC_DOC_ROOT, 'show_indexes': True}), 
    (r'^login/$', 'django.contrib.auth.views.login'), 
    (r'^logout/$', do_logout), 
) 

¿Alguien me puede ayudar por favor, cómo hacer que django urls case insensitive?

Respuesta

82

sólo hay que poner (?i) al comienzo de cada cuerda r'...', es decir:

urlpatterns = patterns('', 
(r'^(?i)admin/(.*)', admin.site.root), 
(r'^(?i)static/(?P<path>.*)$', 'django.views.static.serve', 
    {'document_root': settings.STATIC_DOC_ROOT, 'show_indexes': True}), 
(r'^(?i)login/$', 'django.contrib.auth.views.login'), 
(r'^(?i)logout/$', do_logout), 
) 

a decir a cada RE para que coincida con mayúsculas y minúsculas - y, por supuesto, vivir felices para siempre -)

+0

! Funcionó ... Muchas gracias ... ¿Pueden sugerirme buenos recursos para aprender expresiones regulares usando Python? –

+3

http://www.regular-expressions.info/ si necesita información gratuita sobre cerveza gratis; http://docs.python.org/library/re.html para información específica de Python; http://books.google.es/books?id=NYEX-Q9evKoC&dq=regular+expression&printsec=frontcover&source=bll&ots=qon_rQMxev&sig=2Z-RDduTVFdL1LeT8mlNq8GTh5U&hl=en&ei=PzbIStutJYqssgPjscH_BQ&sa=X&oi=book_result&ct=result&resnum=12#v=onepage&q=regular% 20expression & f = false si puede darse el lujo de invertir (¡gran libro! -). –

+2

Además, dado que (? I) es una bandera de expresión regular, no tiene que ser posterior al Caret. Por ejemplo, '(r '(? I)^logout/$', do_logout)' funciona igual y puede ser más legible para algunos. Otros indicadores de expresiones regulares que se pueden usar en el expreso son 'L', 'm', 's', 'u', 'x' como se describe en (? ILmusx) en [https://docs.python.org/2 /library/re.html](https://docs.python.org/2/library/re.html). – ChrisFreeman

Cuestiones relacionadas