gpt4 book ai didi

django - 使用 Django 和 Python 3 检测移动设备

转载 作者:行者123 更新时间:2023-12-02 09:14:03 25 4
gpt4 key购买 nike

我正在努力寻找一种简单的方法来检测请求是否来 self 的 Django View 中的移动设备。

我正在尝试实现这样的事情:

#views.py

def myfunction(request):

...
if request.mobile:
is_mobile = True
else:
is_mobile = False

context = {
... ,
'is_mobile': is_mobile,
}
return render(request, 'mytemplate.html', context)

mytemplate.html :

{% if is_mobile %}    
show something
{% else %}
show something else
{% endif %}

我检查过的所有地方(例如 herehere ), minidetector被推荐。我安装了不同的版本:pip install minidetector , pip install minidetector2 ,以及直接的几个 github 存储库,但它们都不与 Python 3 兼容。

所以我的问题是:是否有与 Python 3 兼容的 miniDetector 版本/分支?如果没有,有哪些替代方案?

最佳答案

Django User Agents包与 Python 3 兼容。

按照上面提供的链接中的安装说明进行操作,然后您可以按如下方式使用它:

def my_view(request):

# Let's assume that the visitor uses an iPhone...
request.user_agent.is_mobile # returns True
request.user_agent.is_tablet # returns False
request.user_agent.is_touch_capable # returns True
request.user_agent.is_pc # returns False
request.user_agent.is_bot # returns False

# Accessing user agent's browser attributes
request.user_agent.browser # returns Browser(family=u'Mobile Safari', version=(5, 1), version_string='5.1')
request.user_agent.browser.family # returns 'Mobile Safari'
request.user_agent.browser.version # returns (5, 1)
request.user_agent.browser.version_string # returns '5.1'

# Operating System properties
request.user_agent.os # returns OperatingSystem(family=u'iOS', version=(5, 1), version_string='5.1')
request.user_agent.os.family # returns 'iOS'
request.user_agent.os.version # returns (5, 1)
request.user_agent.os.version_string # returns '5.1'

# Device properties
request.user_agent.device # returns Device(family='iPhone')
request.user_agent.device.family # returns 'iPhone'

模板中的用法如下:

{% if request.user_agent.is_mobile %}
Do stuff here...
{% endif %}

但是,请注意,中间件类在 Django 1.10 中发生了变化。因此,如果您使用的是 Django 1.10 +,则必须按照此 GitHub issue tracker page 中给出的方式修改此包中的中间件类定义。 .

关于django - 使用 Django 和 Python 3 检测移动设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42273319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com