Django:重定向到大小写正确的网址

米卡·沃尔特(Micah Walter)

我有一个Django应用,并且在下面有一行urls.py

url(r'^piece/(?P<pk>[0-9a-zA-Z]+)/$', 'piece', name="piece-detail"),

我想以pk不区分大小写的方式匹配ID的大小写,也就是说,用户键入A123还是都没有关系a123

我想到的一种解决方案是在视图中捕获404异常,pk根据需要将其转换为大写,然后重试。但是,我不确定这是个好主意。一方面,它为多种规范的URL留下了可能性。

有没有一种方法可以将匹配的URL重定向(?P<pk>[0-9a-z]+)到等效的大写字符?

德威特

(最简单的)方法是您描述的方法。piece如果视图pk不是大写字母,请在视图的开头添加一个检查以重定向用户

from django.http import HttpResponseRedirect

def piece(request, pk):

    if pk != pk.upper():
        return HttpResponseRedirect("/piece/{0}/".format(pk.upper()))

    # Normal code here.
    (...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章