我有以下CBV:
class Index(TemplateView):
template_name = 'index_app/index.html'
以及一个函数,该函数可以接收请求对象并返回其是否来自移动设备:
def mobileBrowser(request):
mobile_browser = False
ua = request.META['HTTP_USER_AGENT'].lower()[0:4]
if (ua in mobile_uas):
mobile_browser = True
else:
for hint in mobile_ua_hints:
if request.META['HTTP_USER_AGENT'].find(hint) > 0:
mobile_browser = True
return mobile_browser
我希望能够使用此功能在我的CBV中执行以下操作:
class Index(TemplateView):
if mobileBrowser(request):
template_name = 'index_app/mobile/index.html'
else:
template_name = 'index_app/index.html'
这是不可能的,因为CBV似乎没有访问请求对象的权限。在这种情况下,有没有办法访问此对象
我知道有可能创建一个标准视图,但是稍后我想继续使用CBV,比如CreateView和诸如此类的工具,这会让我再次陷入同样的境地
您可以使用
self.request
访问请求。这种逻辑的最佳位置是get_template_names
相关问题 更多 >
编程相关推荐