Django不区分大小写的网址?

Sof*_*tic 38 python django

似乎默认情况下,django的url solver执行区分大小写搜索以解决url并区分'/ Login'和'login'.我的网址模式如下.

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),
)
Run Code Online (Sandbox Code Playgroud)

任何人都可以指导我,如何使django网址不敏感?

Ale*_*lli 88

只需放在(?i)每个r'...'字符串的开头,即:

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),
)
Run Code Online (Sandbox Code Playgroud)

告诉每个RE不区分大小写 - 当然,从此过上幸福的生活! - )

  • http://www.regular-expressions.info/如果您需要免费的免费啤酒信息; http://docs.python.org/library/re.html获取特定于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 = false,如果你有能力投资(好书! - ). (3认同)
  • 另外,由于(?i)是常规快速标志,因此不必在Caret之后.例如,`(r'(?i)^ logout/$',do_logout),`也可以,对某些人来说可能更具可读性.可以在快递中使用的其他正则表达式标志是'L','m','s','u','x',如[?iLmusx]所述[https://docs.python.org/2 /library/re.html](https://docs.python.org/2/library/re.html). (2认同)

小智 12

在Django 2.1中,似乎(?i)放在URL正则表达式中的任何位置都会导致它忽略大小写.但是,reverse()除非在正则表达式结束时(?i)跟随,否则失败$.

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') ]
Run Code Online (Sandbox Code Playgroud)

加薪

ValueError: Non-reversible reg-exp portion: '(?i'
Run Code Online (Sandbox Code Playgroud)

但与正则表达式干净利落地运行r'home/$(?i)'.