2014-11-06 20 views
0

有没有什么办法可以在settings.py中设置一个变量来指向当前的url?Django - 获取正在运行的服务器绝对url

例如,如果我在http://0.0.0.0:8080http://127.0.0.1:9000https://www.mydomain.com上运行调试服务器。

我基本上需要为从API返回的图像字段生成完整路径。诀窍是,我并不总是有一个请求对象(例如DRF上的POST - 调用transform_xxx时,请求在上下文中不存在)。

感谢任何帮助。

+0

我不明白这个问题 - 是的,当然你可以在settings.py中设置一个变量。您也可以创建特定于环境的设置(“settings_local.py”)。您还可以将域名存储在环境变量中,并在需要时将其读取。 – schneck 2014-11-06 12:06:59

+0

我想在服务器启动时填充变量。例如'settings.py'中设置'HOST_URL = get_host_url_somehow()' – haki 2014-11-06 12:52:03

+0

没有请求对象,没有合理的方法。您应该在关于上下文(站点框架,操作系统环境,本地设置等)中设置它。 – schneck 2014-11-06 12:53:21

回答

0

假设你使用的是contrib.sites框架,你可以从那里取得网站的URL。

有一个good example in the docs for when you don't have access to the request

current_site = Site.objects.get_current() 
if current_site.domain == 'foo.com': 
    # Do something 
    pass 
else: 
    # Do something else. 
    pass 

希望这就是你需要的。

UPDATE:我从正确使用的注释中看到,您将有可用的请求。当你不这样做时,我会留下来回答这个问题。