在我的模型中,我想使用我在视图中使用的域名(HOST)。 在可视的视图中,感谢“请求”对象。但我该怎么办 这种模型方法?哪些不使用“HttpRequest”对象?在django模型中检测HOST域名
现在我在settings.py中设置一个全局值HOST并使用它,但这是 丑陋。
此外,我不想管理“网站”(网站应用程序) - 有没有办法, 我可以抓住“默认”网站主机名?
非常感谢您的帮助! (对不起我的英文不好)
在我的模型中,我想使用我在视图中使用的域名(HOST)。 在可视的视图中,感谢“请求”对象。但我该怎么办 这种模型方法?哪些不使用“HttpRequest”对象?在django模型中检测HOST域名
现在我在settings.py中设置一个全局值HOST并使用它,但这是 丑陋。
此外,我不想管理“网站”(网站应用程序) - 有没有办法, 我可以抓住“默认”网站主机名?
非常感谢您的帮助! (对不起我的英文不好)
如果您从视图中调用模型方法,则可以将请求参数添加到模型方法,并在从视图中调用该方法时将其包含在内。例如。
class MyModel(models.Model):
...
def MyMethod(self, request):
# Do whatever with request here
def MyView(request):
mm = MyModel()
mm.MyMethod(request)
您还可以使用“request.get_host()”的HttpRequest的方法来获得网站,这将使用来自HTTP_X_FORWARDED_HOST信息和HTTP_HOST头,如果不提供退换货请求的源主机的域名值,该方法将使用SERVER_NAME和SERVER_PORT的组合。
如果request
对象不可用,最好的方法是使用Django Sites framework,我想。这需要事先正确设置site.domain
(和site.name
,如果需要)。 .get_current
根据您的django.conf.settings.SITE_ID
设置。
>>> from django.contrib.sites.models import Site
>>> obj = MyModel.objects.get(id=3)
>>> obj.get_absolute_url()
'/mymodel/objects/3/'
>>> Site.objects.get_current().domain
'example.com'
>>> 'http://%s%s' % (Site.objects.get_current().domain, obj.get_absolute_url())
'http://example.com/mymodel/objects/3/'
我是正式的愚蠢!谢谢,亚当! :)所以我只需要在该方法中使用request.META ['SERVER_NAME'],对吧? :)再次,非常感谢! – nadomado 2009-09-09 22:58:18
看起来像你需要的那个。 – Adam 2009-09-10 00:12:43