使用Django将URL重定向到外部站点

时间:2019-04-25 12:48:57

标签: django redirect

我正在尝试将许多页面重定向到我的Django网站之外的外部网站。通常,我使用htaccess进行这种重定向,但是在这种情况下,我无法更改服务器上的配置,而需要在Django中进行重定向。以下是一些示例:

  

http://djangosite.com/products/10-> http://example.com/products/10   http://djangosite.com/products/search->   http://example.com/products/search   http://djangosite.com/products/10/edit->   http://example.com/products/10/edit   http://djangosite.com/products/10/review->   http://example.com/products/10/review

我可以使用Django进行此重定向吗?这是我所拥有的:

path('products/<slug:slug>', RedirectView.as_view(url='http://example.com/products/'+slug, permanent=True)),

但是它返回NameError: name 'slug' is not defined

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用旧式字典格式插入kwarg。

path('products/<slug:slug>', RedirectView.as_view(url='http://example.com/products/%(slug)s', permanent=True)),

答案 1 :(得分:0)

创建一个新的重定向视图,并覆盖 get_redirect_url() 方法,

class CustomRedirectView(RedirectView):
    def get_redirect_url(self, *args, **kwargs):
        return "http://example.com/products/{}".format(kwargs['slug'])

并在您的网址中,使用新创建的视图

path('products/<slug:slug>', CustomRedirectView.as_view(permanent=True)),