我想从我的模板中检查我的网站是否在HTTPS下运行,以便我可以有条件地将S添加到我的外部JavaScript库(即jQuery)的HTTP中。我怎么能这样做?
答案 0 :(得分:14)
如果您的资源托管在与提供请求相同的计算机上,则可能根本不需要指定网址方案:
<script src="/static/js/myfile.js" type="text/javascript"></script>
这将使用与原始页面请求相同的协议(http或https)和服务器。
编辑2(2016):
如果您正在访问另一台服务器上的资源,现在最好的解决方案(如pointed out by mpen below)是使用相对URL方案:
<script src="//media.example.com/static/js/myfile.js" type="text/javascript"></script>
这将使用http或https自动连接到服务器,具体取决于与当前页面的连接。
请注意,如果您需要支持旧浏览器,则可能会导致some problems。
修改:或者,如果您出于某种原因确实需要模板中的信息,则可以add the request context processor在视图中使用RequestContext。这会在模板上下文中放置一个request
变量,这样您就可以访问HttpRequest
对象。然后,您可以通过检查request.is_secure
例如:
<script src="http{% if request.is_secure %}s{% endif %}://media.example.com/static/js/myfile.js" type="text/javascript"></script>
答案 1 :(得分:7)
我不确定Google是否在我提出这个问题的时候这样做了,但他们现在建议您通过
添加库<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
//
将使用您当前使用的任何方案 - 无需额外的代码或条件。
答案 2 :(得分:6)
使用is_secure()查看视图中的请求,并将其发送到模板。
答案 3 :(得分:1)
请考虑使用{% static %}
模板标记(在Django&gt; = 1.4中),该标记可以配置为在单独的域或服务器上托管媒体文件。这将消除您的is_secure问题。
https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:templatetag-staticfiles-static