在Django views.py中更正根URL

时间:2013-07-24 14:11:37

标签: django url django-views

我需要在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设置变量。它是什么?感谢。

1 个答案:

答案 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)
)