如何在RedirectView中自定义URL

时间:2019-03-21 01:59:23

标签: django

我正在使用Django 1.5,尝试从url捕获参数,然后使用该参数查询文章ID并将用户重定向到该文章。

我不能在url.py中指定新的网址,并执行以下操作吗?但这只是将我要使用的网址附加到当前网址的末尾

url.py

url(r'^external/(?P<external_id>\d+)/$', myView.as_view(), name='external-view')

views.py

class MyView(RedirectView):
    def get_redirect_url(self, **kwargs):
        external_id = kwargs['external_id']
        article_id = Article.objects.get(external_id=external_id).id
        domain = Site.objects.get_current().domain
        new_url = '{}/article/{}'.format(domain, article_id)
        return new_url

1 个答案:

答案 0 :(得分:2)

为了使外部重定向正常工作,您必须在域之前添加“ http://”或“ https://”。因此,您可以选择以下两个选项之一:

  1. 每次保存Site对象时,请确保domain属性以“ http://”或“ https://”开头
  2. 您可以对其进行硬编码:new_url = 'http://{}/article/{}'.format(domain, article_id),但是您需要事先知道它是http还是https