将后缀信息添加到url django

时间:2018-04-06 12:25:47

标签: django django-views django-urls

我意识到stackoverflow用url做了一个技巧,使它更具人性化

它具有以下模式

  

stackoverflow.com/questions/id_question/title_question

例如我们有

  

stackoverflow.com/questions/36676286/counter-with-lambda-over-map-java8

如果你删除了标题问题的一部分,你就转到了网址

  

示例:stackoverflow.com/questions/36676286/counter-with-la

您仍然会重定向到正确的网址。

看起来它只读取到ID,然后它将标题信息添加到网址,我如何将这些信息添加到网址?

提前致谢

1 个答案:

答案 0 :(得分:1)

你可以通过捕获URL中的id和slug来实现这一点,但只能使用id来查找帖子;然后你可以将帖子的slug与你得到的slug进行比较,如果它们不相等则重定向。像(使用Django 2.0路径语法):

path('questions/<int:id>/<slug:slug>', views.question, 'question')

...

def question(request, id, slug=None):
    post = Post.objects.get(id=id)
    if slug != post.slug:
        return redirect('question', id=id, slug=post.slug)
    ...