Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-从HTTP/Browser中提取主语言代码_Python_Django_Http Accept Language - Fatal编程技术网

Python-从HTTP/Browser中提取主语言代码

Python-从HTTP/Browser中提取主语言代码,python,django,http-accept-language,Python,Django,Http Accept Language,我需要一种方法来确定浏览器中的主语言集。我发现了一个非常好的PHP解决方案,但不幸的是,我使用的是Django/Python 我认为这些信息在HTTP请求的HTTP_ACCEPT_LANGUAGE属性中 有什么想法或现成的功能给我吗?您正在寻找: 是一个轻量级web框架,包括一个在本例中可以重用的便利工具: from webob.acceptparse import Accept language_accept = Accept(request.META['HTTP_ACCEPT_LANGUA

我需要一种方法来确定浏览器中的主语言集。我发现了一个非常好的PHP解决方案,但不幸的是,我使用的是Django/Python

我认为这些信息在HTTP请求的HTTP_ACCEPT_LANGUAGE属性中

有什么想法或现成的功能给我吗?

您正在寻找:

是一个轻量级web框架,包括一个在本例中可以重用的便利工具:

from webob.acceptparse import Accept

language_accept = Accept(request.META['HTTP_ACCEPT_LANGUAGE'])
print language_accept.best_match(('en', 'de', 'fr'))
print 'en' in language_accept
请注意,安装WebOb包不会干扰Django的功能,我们只是在这里重新使用包中的一个类,它恰好非常有用

简短的演示通常更具说明性:

>>> header = 'en-us,en;q=0.5'
>>> from webob.acceptparse import Accept
>>> lang = Accept(header)
>>> 'en' in lang
True
>>> 'fr' in lang
False
>>> lang.best_match(('en', 'de', 'fr'))
'en'

这是我使用的一个函数,也是我自己创造的

def language(self):
        if 'HTTP_ACCEPT_LANGUAGE' in self._request.META:
            lang = self._request.META['HTTP_ACCEPT_LANGUAGE']
            return str(lang[:2])
        else:
            return 'en'

就叫它。

我知道这一点,但我需要一种方法来检测主语言。大多数情况下,
HTTP\u ACCEPT\u LANGUAGE
是一个包含不同语言的字符串,因此必须注意,客户端可能并不总是传递
HTTP\u ACCEPT\u LANGUAGE
,即使传递,其值也可能不正确。最简单的方法是让用户明确地选择他们的语言。这只是我网站上的一个小功能。如果我得到代码,那就好了。如果不是,我就用德语或英语。。。
def language(self):
        if 'HTTP_ACCEPT_LANGUAGE' in self._request.META:
            lang = self._request.META['HTTP_ACCEPT_LANGUAGE']
            return str(lang[:2])
        else:
            return 'en'