在管理命令中构建Django绝对URL
我们在Django中使用reverse来获取网址,比如说 -
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}))
这样就能得到想要的格式的网址。但是问题是,我是在一个自定义的管理命令中生成这个网址,而没有办法访问request
这个变量。有没有什么办法可以生成格式为 - www.mysite.com/path1/path2/
的网址呢?
1 个回答
2
不行,按照我所知道的,从管理命令中是无法做到这一点的。正如你自己发现的那样,你需要用到一些request
的信息来构建完整的URL,而当你从控制台启动管理命令时,是没有请求的。
在我的项目中,我通常会在settings
里设置一个叫BASE_URL
的变量,里面放上你的基础域名,然后用它来构建URL。
你也可以看看网站框架的相关内容:https://docs.djangoproject.com/en/dev/ref/contrib/sites/