我有一个 BaseHandler 类,它是我的 AppEngine 站点中的 Tipfy RequestHandler 的子类。在其中,我为移动设备设置了一个“穷人”浏览器嗅探器,其类属性(元组)包含设备名称。
在随后的方法中,我遍历元组中的设备名称,并根据请求对象中的用户代理字符串检查它们。如果我得到一个匹配项,我将一个名为“is_mobile”的实例属性设置为 True。
然而,在那种方法中,Python 给了我一个“TypeError:'UserAgent' 类型的参数不可迭代”错误,我不明白为什么,因为它抱怨的那一行不是(据我所知)一个循环。
这是代码:
class BaseHandler(RequestHandler, AppEngineAuthMixin, AllSessionMixins):
mobile_devices = ('Android', 'iPhone', 'iPod', 'Blackberry')
....
def detect_mobile_devices(self):
found_device = False
for device in self.__class__.mobile_devices:
if device in self.request.user_agent:
found_device = True
break
self.is_mobile = found_device
这是 Python 不喜欢的那一行:
File "/path/to/project/app/apps/remember_things/handlers.py", line 56, in detect_mobile_devices
if device in self.request.user_agent: