{# Anything other than port 80, HTTP_HOST will also include the port number as well #}
{% ifequal request.META.HTTP_HOST 'example2.com' %}
<! your css imports here >
{% endifequal %}
class DomainCheckMiddleware(object):
def process_request(self, request):
if request.META['HTTP_HOST'] == "example2.com":
request.IS_EXAMPLE2 = True
else:
request.IS_EXAMPLE2 = False
return None
在您的settings.py中
MIDDLEWARE_CLASSES = (
# whatever middleware you're already loading
# note: your middleware MUST exist in a package that's part of the INSTALLED_APPS
'yourproject.someapp.DomainCheckMiddleware'
)
在模板中
{% if request.IS_EXAMPLE2 %}
<! load your css here >
{% endif %}
这是一项更复杂的工作,而且基本上也做了同样的事情,但是您可以很容易地应用一些额外的测试来查看您是处于调试模式还是仅仅访问overlocalhost:8000 and 仍然将示例2设置为true,而不会使模板更难阅读
这是一件很简单的事情。你有几个不同的选择
直接从模板检查httpu主机
一种非常简单的方法是从模板检查request.META dictionary的HTTP\u主机密钥值
请记住,这是由客户机设置的,因此如果您正在执行其他对安全敏感的操作,那么这将不是使用的方法。不过,只要加载一些CSS就可以了
自定义中间件
另一种选择是创建自定义中间件并从中检查相同的对象。基本上是相同的过程,但是您可能希望在请求对象上设置一个额外的键
在某个文件中。。yourproject/someapp/middlware.py
在您的settings.py中
在模板中
这是一项更复杂的工作,而且基本上也做了同样的事情,但是您可以很容易地应用一些额外的测试来查看您是处于调试模式还是仅仅访问overlocalhost:8000 and 仍然将示例2设置为true,而不会使模板更难阅读
这也有前面提到的同样的缺点
https://docs.djangoproject.com/en/dev/topics/http/middleware/
使用站点框架
使用站点框架只有在您启用了它(django.contrib.sites)时才有效,默认情况下,它不再是这样,而且对于您的目的来说是多余的。你可以从这个答案中看到一个例子: How can I get the domain name of my site within a Django template?
相关问题 更多 >
编程相关推荐