Возможно, для этого есть лучшие/более простые способы, но одна вещь, которую вы можете сделать для достижения этого, добавляет параметр _scheme='https'
к каждому звонку до request.static_url()
.
Для этого вы можете, конечно, редактировать pyramid/url.py
, но вы также можете сделать это в ваши проекты __init__.py
:
from pyramid.url import URLMethodsMixin
URLMethodsMixin.static_url_org = URLMethodsMixin.static_url # backup of original
def https_static_url(self, *args, **kw):
kw['_scheme'] = 'https' # add parameter forcing https
return URLMethodsMixin.static_url_org(self, *args, **kw) # call backup
URLMethodsMixin.static_url = https_static_url # replace original with backup
Параметры для static_url
работ как route_url
. Из документации:
Обратите внимание, что если _scheme передается как по протоколу HTTPS, и _port не передается, то предполагается, что значение _port, что был принят в качестве 443. Аналогично, если _scheme передается как HTTP и _port не передается , считается, что значение _port было передано как 80. Чтобы избежать такого поведения, всегда явно передавайте _порт всякий раз, когда вы передаете _scheme. Установка «_scheme» автоматически заставляет порт 443