создать сайт для мобильных и ПК с Django - PullRequest
3 голосов
/ 08 февраля 2010

Я пытаюсь разработать веб-сайт для мобильных и ПК-браузеров с django. и я пытаюсь выяснить лучшую структуру представлений и шаблонов. вот что я пробовал:

1) используйте разные URL (например, http://example.com/mobile/ и http://example.com/ ИЛИ http://example.com/?c=mobile), чтобы различать мобильные телефоны и ПК, и сопоставить их с другими представлениями, которые устанавливают разные шаблоны.

2) в представлении установить другой шаблон в соответствии с USER_CLIENT

3) использовать слой-оболочку представления, фактическое представление просто возвращает данные в оболочку, оболочка устанавливает другой шаблон.

Есть ли распространенный способ справиться с этим в Django? какие-либо предложения и комментарии?

Ответы [ 3 ]

1 голос
/ 23 марта 2010

Я бы порекомендовал решение 3; использование декоратора для проверки клиентского агента пользователя и возврат другого шаблона в случае мобильного агента.

Пусть декоратор примет два аргумента: обычный шаблон и мобильный шаблон.

С вашей точки зрения, вернуть dict Декоратор может перейти к функции рендеринга в качестве контекста. Существует декоратор с именем render_to, который делает это очень хорошо, Google для этого.

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

1 голос
/ 09 февраля 2010

Используйте каркас Django для сайтов для мобильной версии на http://m.example.com.

0 голосов
/ 11 ноября 2010

рекомендация: используйте minidetector , чтобы добавить дополнительную информацию к запросу, затем используйте встроенный контекст запроса django, чтобы передать его в ваши шаблоны следующим образом.

from django.shortcuts import render_to_response
from django.template import RequestContext

def my_view_on_mobile_and_desktop(request)
    .....
    render_to_response('regular_template.html', 
                       {'my vars to template':vars}, 
                       context_instance=RequestContext(request))

тогда в вашем шаблоне вы можете ввести такие вещи, как:

<html>
  <head>
  {% block head %}
    <title>blah</title>
  {% if request.mobile %}
    <link rel="stylesheet" href="{{ MEDIA_URL }}/styles/base-mobile.css">
  {% else %}
    <link rel="stylesheet" href="{{ MEDIA_URL }}/styles/base-desktop.css">
  {% endif %}
  </head>
  <body>
    <div id="navigation">
      {% include "_navigation.html" %}
    </div>
    {% if not request.mobile %}
    <div id="sidebar">
      <p> sidebar content not fit for mobile </p>
    </div>
    {% endif %>
    <div id="content">
      <article>
        {% if not request.mobile %}
        <aside>
          <p> aside content </p>
        </aside>
        {% endif %}
        <p> article content </p>
      </aricle>
    </div>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...