Tôi muốn static_url_path
luận các flask.Flask
constructor của sẽ chấp nhận một URI đầy đủ, nhưng nó hét lên về con đường cần một dấu gạch chéo hàng đầu khi bạn cố gắng đó. Nếu nó chấp nhận nó, bạn chỉ có thể sử dụng url_for
sau khi thiết lập static_url_path='http://my_s3_bucket.aws.amazon.com/'
hoặc hơn.
Một giải pháp khả thi khác là sử dụng bộ xử lý ngữ cảnh. Tôi tin rằng đây là giải pháp sạch nhất, nhưng tôi không có nhiều kinh nghiệm với bình. Nó chắc chắn trông sạch sẽ.Bằng cách sử dụng một bộ xử lý ngữ cảnh, tôi kéo URL từ môi trường (tôi đang sử dụng heroku để nó rất dễ cài đặt). Sau đó, bộ xử lý ngữ cảnh làm cho biến static_url có sẵn trong các mẫu của tôi.
Trong app.py:
# Environment has STATIC_URL='http://my_s3_bucket.aws.amazon.com/'
@app.context_processor
def inject_static_url():
"""
Inject the variable 'static_url' into the templates. Grab it from
the environment variable STATIC_URL, or use the default.
Template variable will always have a trailing slash.
"""
static_url = os.environ.get('STATIC_URL', app.static_url_path)
if not static_url.endswith('/'):
static_url += '/'
return dict(
static_url=static_url
)
Trong mẫu:
<link rel="stylesheet" type="text/css" href="{{ static_url }}css/main.css" />
Kết quả
<link rel="stylesheet" type="text/css" href="http://my_s3_bucket.aws.amazon.com/css/main.css" />
Nguồn
2012-09-21 22:40:14
Xấu xí, không cần. Chỉ cần sử dụng bộ xử lý ngữ cảnh để đặt biến. –