我正在创建一个视频网站。我希望我的直接网址看起来像example.com/watch/this-is-a-slug-1,其中1是视频ID。我不希望这个slu to重要。 example.com/watch/this-is-another-slug-1应指向同一页面。在SO上,/ questions / id是url中唯一重要的部分。我怎么能这样做?
答案 0 :(得分:9)
Stack Overflow使用表单
example.com/watch/1/this-is-a-slug
更容易处理。如果您希望ID位于slug令牌的末尾,那么您将打开一堆蠕虫,从那时起(例如)它会限制您可以使用哪种类型的slu ,,或者只是让自己变得更难。< / p>
您可以使用以下网址处理程序:
(r'^watch/(?P<id>\d+)/', 'watch')
只获取ID并忽略ID之后的任何。 (注意,没有$
行尾字符。)
答案 1 :(得分:0)
我没有使用过Django,但之前我曾使用过MVC框架。通常,它们具有某种URL路由功能,允许您定义映射到控制器的模式(通常是正则表达式)。
这可能是一个很好的起点:http://docs.djangoproject.com/en/dev/topics/http/urls/
正如Jesse Beder所说,你只需要正则表达式来匹配第一个URL段(/ watch)和一个数字ID,然后将它转发给一个监视控制器,它将处理ID并忽略slug。
答案 2 :(得分:-3)
对Stackoverflow充分尊重,这是错误的方法。您不需要在URL中有两个标识页面的元素。 ID无关紧要 - 它是垃圾。您应该能够仅从slug中唯一地标识页面。