Python 如果url区分大小写,则命名url反转不起作用

Python 如果url区分大小写,则命名url反转不起作用,python,regex,django,reverse,manage.py,Python,Regex,Django,Reverse,Manage.py,我正在尝试命名我的url,这样它就可以在我的django应用程序中反转 mysite/url.py: urlpatterns = patterns('', # Examples: url(r'^$', 'myapp.views.redirect_to_home'), url(r'^admin/', include(admin.site.urls)),

我正在尝试命名我的url,这样它就可以在我的django应用程序中反转

mysite/url.py:

urlpatterns = patterns('',
                   # Examples:
                   url(r'^$', 'myapp.views.redirect_to_home'),
                   url(r'^admin/', include(admin.site.urls)),
                   url(r'^myapp/', include('myapp.urls')),)
myapp/url.py

urlpatterns = patterns('',
                   url(r'(?i)^$', views.redirect_to_home),
                   url(r'(?i)^Login/$', views.home, name="home"),
                   url(r'(?i)^Logout/$', views.logout_user, name="logout_user"),)
请注意,我特意在每个正则表达式的begging中添加了“(?i)^”,以使URL区分大小写

但是,有了这个字符串“(?i)^”使我的反向函数无法

未找到参数为“()”且关键字参数为“{}”的“home”的反转。已尝试1个模式:[“myapp/(?i)^Login/$”]

在尝试移除(?i)^之后,我注意到反向操作成功

我该怎么做才能使我的URL区分大小写,并且仍然是可逆的


谢谢。

它们不是不区分大小写的。你为什么想要这个?无论如何,
(?i)
必须位于Python内置
re
中正则表达式的最开头。。。不能中途使用/稍后关闭。。。如果你真的想这样做,你最好看看一些中间件,它们故意降低路径的大小写(或者在你的前端服务器上降低路径的大小写),然后在你的路由中坚持使用小写url匹配为什么不应该呢?我不希望任何人试图通过错误大写的url访问我的网站,并得到404。。这真的不常见吗?大多数用户都会点击你的主页或在书上标记你自己的内部链接。。。看看我建议的中间件或前端解决方案-不知道哪一个更适合您我肯定会的,即使如此,我尝试将(?I)移到mysite/url.py URL的开头,但仍然无法使用相同的错误。也就是说,虽然它们位于字符串的最开头,但仍然无法匹配模式。为什么?