我正在尝试将许多页面重定向到我的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
有没有办法做到这一点?
答案 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)),