0
我的Django網絡應用程序允許用戶通過HTTP
和HTTPS
連接。我很好奇:有沒有辦法檢測中的url方案settings.py?如果是這樣,怎麼樣?檢測Django應用程序的settings.py中的url方案
我的Django網絡應用程序允許用戶通過HTTP
和HTTPS
連接。我很好奇:有沒有辦法檢測中的url方案settings.py?如果是這樣,怎麼樣?檢測Django應用程序的settings.py中的url方案
這不能在settings.py文件中完成,因爲它只包含常量和變量。它不處理請求。但是這可以在中間件中完成。
這裏有一箇中間件在它的查詢URL方案最簡單的形式:
class DetectUrlScheme(object):
""" Middleware for detecting URL scheme """
def process_request(self, request):
if request.is_secure():
# HTTPS
# do something ...
else:
# HTTP
# do something ...
return
雖然,如果你有一對夫婦只的意見,寫一箇中間件似乎是一個開銷。所以,你也可以在你的視圖中檢查URL方案。
def myview(request):
if request.is_secure():
# HTTPS
# do something ...
else:
# HTTP
# do something ...
你不能在* settings.py *文件中執行它,因爲它只包含常量和變量。它不處理請求。所以,沒辦法檢測URL方案。但是這可以在中間件中完成。 – xyres
是的,這就是我的想法。我正在從第三方存儲桶(Azure)加載一些靜態文件。我希望這些對象的uris爲http請求用戶提供'http',爲https請求用戶提供'https'。那麼我應該使用中間件將正確的方案傳遞給我的'Storage'類嗎? –
是的,如果可以使用中間件來完成,那就去做吧。你所需要做的就是檢查'request.is_secure()'。它對於HTTPS請求是「真」的。雖然這也可以在視圖中完成。 – xyres