我有以下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似乎无权访问请求对象。在这种情况下有什么方法可以访问该对象?
我知道可以创建一个标准视图,但是稍后我想继续使用CreateView之类的CBV和诸如此类的东西,这将再次使我陷入相同的境地。
答案 0 :(得分:2)
您可以使用function clean_login_url_cleaner( $url ) {
$query_args = array(
'authentication',
'updated',
'created',
'sent',
'restore'
);
return esc_url( remove_query_arg( $query_args, $url ) );
}
访问请求。此逻辑的最佳位置是self.request
get_template_names