2009-10-04 10 views
31

Il semble que par défaut le solveur url de django effectue une recherche sensible à la casse pour la résolution d'URL et différencie entre '/ Login' et 'login'. Mes modèles d'URL sont les suivants.Urls insensible à la casse pour 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), 
) 

Quelqu'un peut-il s'il vous plaît me guider, comment faire django urls insensible à la casse?

Répondre

82

Il suffit de mettre (?i) au début de chaque chaîne r'...', à savoir:

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), 
) 

à dire à chaque RE pour correspondre insensible à la casse - et, bien sûr, vivre heureux pour toujours -)

+0

! Cela a fonctionné ... Merci beaucoup ... Pouvez-vous me suggérer de bonnes ressources pour apprendre des expressions régulières en utilisant python? –

+3

http://www.regular-expressions.info/ si vous avez besoin d'informations gratuites sur la bière gratuite; http://docs.python.org/library/re.html pour les informations spécifiques à Python; http://books.google.com/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 = faux si vous pouvez vous permettre d'investir (excellent livre!). –

+2

De plus, puisque le (? I) est un drapeau express régulier, il n'a pas besoin d'être après le Caret. Par exemple, '(r '(? I)^logout/$', do_logout),' fonctionne également et pourrait être plus lisible pour certains. Les autres indicateurs regex qui peuvent être utilisés dans l'express sont 'L', 'm', 's', 'u', 'x' comme discuté sous (? ILmusx) à [https://docs.python.org/2 /library/re.html](https://docs.python.org/2/library/re.html). – ChrisFreeman

Questions connexes