python - minusculas - programa que diga si es mayuscula o minuscula
¿Urls insensibles a mayúsculas/minúsculas para Django? (3)
Parece que, por defecto, el solucionador de urls de django realiza una búsqueda sensible a mayúsculas y minúsculas para resolver url y diferenciar entre ''/ Login'' e ''login''. Mis patrones de URL son los siguientes.
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 puede por favor guiarme, cómo hacer que las urnas django sean insensibles?
Con Django 2.0 (lanzado en diciembre de 2017), la forma recomendada de usar expresiones regulares para la coincidencia de URL ahora es re_path
lugar de url
:
from django.urls import path, re_path
from . import views
urlpatterns = [
re_path(r''^(?i)admin/(.*)'', admin.site.root),
re_path(r''^(?i)something/(?P<somestring>/w+)/$'', views.something),
re_path(r''^(?i)login/$'', views.login),
re_path(r''^(?i)logout/$'', views.logout),
]
En Django 2.1, parece que (?i)
colocado en cualquier lugar dentro de la URL regex causará que ignore el caso. Sin embargo, reverse()
falla a menos que (?i)
siga $
al final de la expresión regular.
from django.urls import re_path, reverse
from django.shortcuts import render
def home_page(request):
foo = reverse(''home_page'')
return render(request, ''home.html'')
urlpatterns = [ re_path(r''home/(?i)'', home_page, name=''home_page'') ]
plantea
ValueError: Non-reversible reg-exp portion: ''(?i''
pero funciona limpiamente con la expresión regular r''home/$(?i)''
.
Simplemente ponga (?i)
al comienzo de cada cadena 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),
)
para decirle a cada RE que coincida con las mayúsculas y minúsculas y, por supuesto, ¡viva feliz para siempre! -)