2014-11-06 18 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:我從正確使用的註釋中看到,您將有可用的請求。當你不這樣做時,我會留下來回答這個問題。