【发布时间】:2011-09-21 08:16:36
【问题描述】:
我正在使用 Django 的基于类的 DetailView 通用视图来查找要显示的对象。在某些情况下,我不想显示对象,而是希望退出并发出 HTTP 重定向。我看不出我该怎么做。它适用于用户在我的应用程序中点击对象但不使用规范 URL 的情况。因此,例如,在 StackOverflow URL 上采用以下形式:
http://stackoverflow.com/<content_type>/<pk>/<seo_friendly_slug>
例如:
http://stackoverflow.com/questions/5661806/django-debug-toolbar-with-django-cms-and-django-1-3
您实际上可以键入任何内容作为 seo_friendly_slug 部分,它会将您重定向到通过 PK 查找的对象的正确规范 URL。
我希望在我的 DetailView 中做同样的事情。检索对象,检查它是否是规范 URL,如果不是,则重定向到项目的 get_absolute_url URL。
我无法在 get_object 中返回 HttpResponseRedirect,因为它正在等待查找的对象。我似乎无法从 get_context_data 返回它,因为它只需要上下文数据。
也许我只需要写一个手动视图,但我想知道是否有人知道这是否可能?
谢谢!
卢多。
【问题讨论】: