我正在设置Django以使用不同的移动模板,但我不确定如何为基于类的视图设置它。如果我将它包含在类中,如下所示会抛出错误。
class EventList(ListView):
model = Event
paginate_by = 10
context_object_name = 'events'
category = None
area = None
starts = None
ends = None
slug_level = ""
if request.mobile:
template_name = "mobile/mobile.html"
...
我有像def get_queryset(self):
这样的函数放置它所以它使用不同的移动模板,因为请求不在基于类的视图中
我在函数中使用minidetector
:
@detect_mobile
def home(request, template_name='pages/home.html'):
....
if request.mobile:
return render_to_response('mobile/mobile.html', context)
答案 0 :(得分:1)
移动设备和桌面设备通常使用相同的HTTP方法,因此CBV不是您在这些客户端之间进行干扰的地方。
相反,您应该查看客户端的属性,例如user-agent标头,并相应地设置模板名称。
我认为以下页面提供了一个很好的介绍: