簡體   English   中英

相當於Python中PHP的$ _SERVER ['HTTP_HOST'],或者在python django中獲取域名

[英]equivalent of $_SERVER['HTTP_HOST'] of PHP in Python , or get domain name in python django

我正在使用Python和Django框架。 當我想使用超鏈接時,我不應該手動編寫完整的URL嗎? 我必須使用一些返回域名的函數,並手動連接它的路徑。 那么,我怎樣才能獲得域名?
喜歡:

http://www.domain.com/path/to/file.ext

為此,我想寫:

"http://"+somefunction()+"/path/to/file.ext" 

在Python中是否有等價的$_SERVER['HTTP_URI']

對於當前請求的原始主機,您可以使用request.get_host()或直接訪問request['HTTP_HOST']

為滿足您的需求,django提供站點框架

>>> from django.contrib.sites.models import Site
>>> Site.objects.get_current().domain
'example.com'
>>> 'http://%s/path/to/file.ext' % Site.objects.get_current().domain
'http://example.com/path/to/file.ext'

沒有直接回答你的問題,但Django有很多方法可以為你處理URL構造,所以你不需要硬編碼。

在Python代碼中:

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect

def my_redir_view(request):
    return HttpResponseRedirect(reverse('another_view'))

在模板內:

<a href="{% url 'logout' %}">Logout</a>

構建絕對URL(在極少數情況下需要它們):

redirect_uri = request.build_absolute_uri(reverse('openid_auth'))

通常,您不希望進行手動URL構建 - 上述方法是您的朋友。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM