I'm creating a video site. I want my direct urls to a video to look like example.com/watch/this-is-a-slug-1 where 1 is the video id. I don't want the slug to matter though. example.com/watch/this-is-another-slug-1 should point to the same page. On SO, /questions/id is the only part of the url that matters. How can I do that?
user281773
问问题
823 次
3 回答
9
Stack Overflow 使用形式
example.com/watch/1/this-is-a-slug
这更容易处理。如果您希望 ID 位于 slug 令牌的末尾,那么您将打开一罐蠕虫,因为那时它将(例如)限制您可以使用哪些类型的 slug,或者只是让您自己更难。
您可以使用 url 处理程序,例如:
(r'^watch/(?P<id>\d+)/', 'watch')
仅获取 ID 并忽略ID 之后的任何内容。(注意没有$
行尾字符。)
于 2010-02-26T04:15:34.327 回答
0
我没有使用过 Django,但我之前使用过 MVC 框架。通常,它们具有某种 URL 路由功能,可让您定义映射到控制器的模式(通常是正则表达式)。
这可能是一个很好的起点:http ://docs.djangoproject.com/en/dev/topics/http/urls/
正如 Jesse Beder 所说,您只需要正则表达式来匹配第一个 URL 段 (/watch) 和数字 ID,然后将其转发到手表控制器,后者将处理 ID 并忽略 slug。
于 2010-02-26T08:36:57.757 回答
-3
在充分尊重 Stackoverflow 的情况下,这是错误的做法。您不需要在 URL 中包含两个标识页面的元素。ID 无关紧要 - 它是垃圾。您应该能够仅从 slug 中唯一地识别页面。
于 2010-02-26T08:13:59.887 回答