如何在Django中创建类似于stackoverflow的URL?

时间:2010-02-26 04:08:36

标签: python django url friendly-url slug

我正在创建一个视频网站。我希望我的直接网址看起来像example.com/watch/this-is-a-slug-1,其中1是视频ID。我不希望这个slu to重要。 example.com/watch/this-is-another-slug-1应指向同一页面。在SO上,/ questions / id是url中唯一重要的部分。我怎么能这样做?

3 个答案:

答案 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中唯一地标识页面。