Django URL中,如何使用正则表达式使 "foo.com/Bar" 与 "foo.com/bar" 相同?

1 投票
2 回答
529 浏览
提问于 2025-04-17 15:40

我的问题是,有人总是链接到 example.com/FooBar,但实际上正确的链接是 example.com/foobar。

我现在用的正则表达式是...

SLUG = '(?P<slug>[\w\d-]+)'

我希望这样说清楚了。我很惊讶居然找不到这个问题的相关提问。也许今天我的搜索能力不太行。

2 个回答

0

你的查询可以这样写:

obj = MyModel.objects.get(slug__icontains=slug)

这里的 icontains 是一种查找方式,它会忽略大小写进行匹配。

6

这个正则表达式可以匹配到两种情况。但问题在于,你可能有一个查询是这样的:

obj = MyModel.objects.get(slug=slug)

这个查询没有匹配上。

要解决这个问题,你可以把查询改成:

obj = MyModel.objects.get(slug=slug.lower())

撰写回答