2015-05-28 3 views
3

Я настраиваю Django для использования другого шаблона для мобильных устройств, но я не уверен, как настроить его для классов, основанных на классе. Если я включу его в класс, как показано ниже, он выдает ошибку.Django class based view mobile template

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

Посмотрите [Джанго-MOBILE] (https://github.com/gregmuellegger/django-mobile). Даже если вы решите не использовать его, вы получите общую идею о том, чтобы отличать мобильные и мобильные телефоны от своего источника. – dhke

ответ

1

Мобильные и настольные компьютеры, как правило, используют одни и те же HTTP-методы, поэтому CBV не там, где вы расходитесь между этими клиентами.

Вместо этого вы должны посмотреть на свойства клиента, такие как заголовок пользовательского агента, и соответственно задать имя шаблона.

Я думаю, что на следующей странице дает большое интро:

http://mobiforge.com/design-development/build-a-mobile-and-desktop-friendly-application-django-15-minutes