我需要在views.py中引用正确的,特定于环境的根URL。这是情况。我正在向Facebook发布一个事件图像,用urllib2抓取图像。
我需要让url动态调整到当前环境。我的解决方案是使用基于环境变量的条件(就像我在settings.py中为env特定的数据库配置所做的那样)。所以我有:
# Get appropriate, environment-specific root url for urllib call below.
try:
if os.environ['ENV'] == 'staging':
img_url = 'http://www.mysite.com/static/img/logo.png'
except:
img_url = 'http://localhost:8000/static/img/logo.png'
graph.post(
path = fb_event_path,
source = urllib2.urlopen(img_url))
这适用于本地和生产(即分期),但我发现它有点hacky。必须有一种更流畅的方式来在views.py中使用根URL设置变量。它是什么?感谢。
答案 0 :(得分:1)
只需将您的暂存/开发逻辑隐藏到settings.py
中,如下所示:
DOMAIN = 'www.mysite.com' # Production DOMAIN
if os.environ['ENV'] != 'staging':
DOMAIN = 'localhost:8000' # Dev DOMAIN
或者将其添加到settings.py
from settings_local import *
在DOMAIN
中定义settings_local.py
:
DOMAIN = 'localhost:8000'
最后在你看来:
from settings import DOMAIN, STATIC_URL
img_url = 'http://{domain}/{static}/img/logo.png'.format(
domain=DOMAIN,
static=STATIC_URL
)
graph.post(
path = fb_event_path,
source = urllib2.urlopen(img_url)
)