django区分大小写的URL会自动更改大小写

时间:2017-03-11 21:39:54

标签: regex django

我正在使用以下正则表达式为我的网址。

url(r'^p/(?P<slug>[a-zA-Z0-9_-]+)/$',short_url, name='short_url')

所有网址都在这里:

urlpatterns = [
    url(r'^api/', include(v1_api.urls)),
    url(r'^p/(?P<slug>[a-zA-Z0-9_-]+)/$',short_url, name='short_url'),
    url('^accounts/register/$',
        RegistrationView.as_view(form_class=SimpleRegForm),
        name='registration_register'),
    # url(r'^accounts/edit/$', edit_profile, name='edit_profile'),
    url(r'^messages/', include('postman.urls', namespace='postman', app_name='postman')),
    url(r'^accounts/', include('registration.backends.simple.urls')),
    url(r'^admin/', include(admin.site.urls)),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

views.py文件

def short_url(request, slug):
    ctx = {}
    ctx['post'] = get_object_or_404(Post.objects.select_related(),slug=slug)
    ctx['form'] = Form()
    return render(request, 'templates/view.html', ctx)

URL假设区分大小写,因为我在mysql中为slug字段设置了这种方式。

当我执行mysql查询时,它确实完成了它的假设。

但是当我改变一个像'Y'的字母时

http://127.0.0.1:8000/p/Y9j4oL/

到'y',django再次重定向到上面的url。

http://127.0.0.1:8000/p/y9j4oL/

为什么会这样?以及如何解决它?

0 个答案:

没有答案