django在管理命令中构建绝对URL

时间:2014-07-01 10:52:47

标签: python django django-urls django-commands

我们在django中使用reverse来获取url例如。 -

my_url = reverse("name_of_url", kwargs={"param":param, "param2":param2})

在上述情况下,my_url的格式为/path1/path2/..

如果我想生成类似 - www.mysite.com/path1/path2/的内容,我们需要执行以下操作 -

my_url = request.build_absolute_uri(reverse("name_of_url", kwargs={"param":param, "param2":param2}))

这将以所需格式提供URL。但问题是,我在自定义管理命令中生成url,并且无法访问request变量。有什么办法,我可以生成格式的网址 - www.mysite.com/path1/path2/

请告诉我,怎么做?

1 个答案:

答案 0 :(得分:2)

不,据我所知,从管理命令中无法做到这一点。正如您已经意识到的那样,您使用部分request信息来构建完整的URL,并且当您从控制台启动管理命令时,没有请求。

我在我的项目中所做的是在BASE_URL中使用您的基本域设置一个名为settings的变量,并使用它来构建您的网址。

您还可以查看网站框架:https://docs.djangoproject.com/en/dev/ref/contrib/sites/