在我的模型中,我想使用我在視圖中使用的域名(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