django-Mobile to aplikacja Django, który zapewnia prosty sposób wykryć przeglądarek mobilnych i daje narzędzia w ręku, aby uczynić kilka różnych szablonów dostarczyć wersję mobilną swojej strony do użytkownika.
Chodzi o to, aby zachować swoje poglądy dokładnie to samo, ale transparentne wymieniać szablony wykorzystywane do renderowania odpowiedź. Jest to wykonywane w dwóch etapach:
1. middleware określa preferencje klienta do przeglądania witryny. Na przykład jeśli chce korzystać z telefonu smak lub pełny smak pulpitu.
2. Ładowarka szablonu odbywa następnie opiekę wybierając odpowiednie szablony w oparciu o smaku wykrytych w middleware.
instalacji
Wymagania wstępne: django_mobile zależy ramach sesji Django. Więc zanim spróbuje użyć django_mobile upewnić się, że ramy sesje jest włączony i działa.
1. Zainstaluj django_mobile z ulubionym narzędziem, np Pythona z easy_install django_mobile lub pip install django_mobile.
2. Dodaj django_mobile do INSTALLED_APPS ustawień w settings.py.
3. Dodaj django_mobile.middleware.MobileDetectionMiddleware z ustawieniami MIDDLEWARE_CLASSES.
4. Dodaj django_mobile.middleware.SetFlavourMiddleware z ustawieniami MIDDLEWARE_CLASSES. Upewnij się, że nie znajduje się ona po MobileDetectionMiddleware a także po SessionMiddleware.
5. Dodaj django_mobile.loader.Loader jako pierwszy element do listy TEMPLATE_LOADERS w settings.py.
6. Dodaj django_mobile.context_processors.flavour z ustawieniami TEMPLATE_CONTEXT_PROCESSORS.
Teraz powinieneś być w stanie korzystać z django-Mobile w jego chwale. Przeczytaj poniżej, jak to wszystko działa, a które mogą być manipulowane ustawienia zmodyfikować zachowanie Django-Mobile.
Zastosowanie
Koncepcja django-komórkowego jest zbudowany wokół idei różnych smakach na swojej stronie. Na przykład wersja mobilna jest opisany jako jeden z możliwych smaku, wersji dla komputerów stacjonarnych, jak innym.
To sprawia, że możliwe jest zapewnienie wielu możliwych konstrukcji, a nie tylko różnicowania pełnej pulpit i jedną wersję komórkowej. Możesz wykonać kilka telefonów dostępne np smaki jeden dla Mobile Safari na iPhone i Android, a także po jednym dla Opery i dodatkową jeden dla tabletów internetowych, takich jak iPad.
Uwaga: Domyślnie django-mobile rozróżnia jedynie pełne i telefonu smaku.
Po prawidłowe smak jakoś wybrany przez middleware, to przypisane do atrybutu request.flavour. Można to wykorzystać w swoich poglądów o zapewnienie oddzielnego logiki.
Zapach ten jest następnie używany do przejrzysty wybrać niestandardowe szablony dla tego szczególnego smaku. Wybrany szablon będzie miał aktualny smak przedrostkiem nazwy szablonu rzeczywiście chcesz uczynić. Oznacza to, kiedy render_to_response ("index.html", ...) jest wywoływana z mobilną smak bycia aktywnym rzeczywiście powrócić odpowiedź świadczonych z telefonem / szablonu index.html. Jednak jeśli ten szablon nie jest aromatyzowana dostępna będzie wdziękiem Przenieś się do domyślnego szablonu index.html.
W niektórych przypadkach to nie jest pożądany sposób na zupełnie osobne szablony dla każdego smaku. Możesz także użyć {{}} zmienną smak szablon tylko zmienić małe aspekty jednego szablonu. Krótki przykład:
& Nbsp;
& Nbsp; ...
Doda (wersja mobilna) do tytułu swojej stronie, jeśli oglądany z telefonu smaku włączona.
Uwaga: Zmienna szablonu smak jest dostępna tylko wtedy, gdy ustawić procesor kontekstowego django_mobile.context_processors.flavour i używane Django RequestContext jako przykład kontekstowego, aby uczynić ten szablon.
Zmiana bieżącego smak
Podstawowa sprawa wykorzystanie django-komórkowego jest oczywiście służyć mobilnej wersji witryny dla użytkowników. Wybór właściwego smaku jest zazwyczaj już zrobione w middleware, gdy własne poglądy są nazywane. W niektórych przypadkach, które chcesz zmienić aktualnie używane smak w widoku lub gdzieś indziej. Można to zrobić, po prostu dzwoniąc django_mobile.set_flavour (smak [, stałe = true]). Pierwszym argumentem jest samo wyjaśnienia. Ale należy pamiętać, że można tylko przejść w smaku, który jest również w swoim otoczeniu AROMATY. W przeciwnym razie set_flavour podniesie ValueError. Opcjonalne stałe parametry określa, czy zmiana smaku jest pamiętać, w przypadku kolejnych próśb o tego samego klienta.
Użytkownicy mogą ustawić ich pożądany smak im samodzielne. Oni po prostu muszą określić parametr smak GET na prośbę swojej stronie. To będzie na stałe wybrać ten smak jak ich preferencji, aby zobaczyć stronę.
Możesz użyć tego parametru GET, aby użytkownik mógł wybrać z dostępnych smakach:
- Pobierz pełną wrażeń >
& Nbsp;- Zobacz naszą wersję mobilną >
& Nbsp;- Zobacz naszą wersję iPad >
- Zobacz naszą wersję mobilną >
& Nbsp;
Uwagi na temat buforowania
Django jest dostarczane z niektórych metod wygody łatwo buforować swoje poglądy. Jednym z nich jest django.views.decorators.cache.cache_page. Problem z buforowania całą stronę w połączeniu z django-komórkowego jest systemem buforowania Django nie jest świadoma smaków. Oznacza to, że jeśli pierwszy wniosek na stronie serwowane jest z telefonem smaku, drugi wniosek może również uzyskać stronę świadczonych z telefonu smaku z pamięci podręcznej - nawet jeśli ten drugi został poproszony przez przeglądarkę stacjonarnym.
django-mobile jest dostarczane z własnym realizacji cache_page aby rozwiązać ten problem. Proszę używać django_mobile.cache.cache_page zamiast Django własnego cache_page dekorator.
Możesz także użyć Django middleware buforowania django.middleware.cache.UpdateCacheMiddleware i FetchFromCacheMiddleware jak już robić. Ale w celu uświadomienia im smaków, trzeba dodać django_mobile.cache.middleware.CacheFlavourMiddleware jako drugi ostatniej pozycji w ustawieniach MIDDLEWARE_CLASSES, tuż przed FetchFromCacheMiddleware.
odniesienia
django_mobile.get_flavour ([wniosek,] [domyślnie])
& Nbsp; Pobierz aktywnego smak. Jeśli nie można ustalić smak wróci domyślne. Może się to zdarzyć, jeśli set_flavour nie wezwano wcześniej w bieżącym cyklu żądanie-odpowiedź. domyślne domyślnie pierwszej pozycji w otoczeniu AROMATY.
django_mobile.set_flavour (smak, [wniosek,] [stałe])
& Nbsp; Ustaw smak używanego do wniosku. Podniesie to ValueError jeśli smak nie jest w otoczeniu AROMATY. Możesz spróbować ustawić na stałe do wniosku smak przekazując stałe = true. Może to nie powieść, jeśli jesteś z cyklu żądanie-odpowiedź. zażądać domyślne do aktywnej życzenie.
django_mobile.context_processors.flavour
& Nbsp; procesor Kontekst, który dodaje aktualną smak jak smak do kontekstu.
django_mobile.context_processors.is_mobile
& Nbsp; Procesor ten kontekst doda zmienną is_mobile do kontekstu, który jest Prawda, jeśli obecny smak równa ustawienie DEFAULT_MOBILE_FLAVOUR.
django_mobile.middleware.SetFlavourMiddleware
& Nbsp; Dba o załadowaniu zapisanego smak z sesji użytkownika, jeśli ustawiony. Również ustawia bieżący wniosek do zmiennej wątku lokalnego. Jest to konieczne, aby zapewnić get_flavour () funkcji, bez konieczności dostępu do obiektu żądania.
django_mobile.middleware.MobileDetectionMiddleware
& Nbsp; Wykrywa jeśli mobilna przeglądarka próbuje uzyskać dostęp do witryny i ustawia smak DEFAULT_MOBILE_FLAVOUR wartości ustawień w przypadku.
django_mobile.cache.cache_page
& Nbsp; samo jak Django cache_page dekoratora, ale dotyczy vary_on_flavour przed Widok zdobią django.views.decorators.cache.cache_page.
django_mobile.cache.vary_on_flavour
& Nbsp; dekorator stworzony z middleware CacheFlavourMiddleware.
django_mobile.cache.middleware.CacheFlavourMiddleware
& Nbsp; Dodaje nagłówek X-Aromat do request.META w process_request i dodaje nagłówek do odpowiedzi ['Vary "] w process_response.
Personalizacja
Istnieje kilka punktów, dostępne, które pozwalają dostosować zachowanie django-mobile. Oto kilka możliwości wymienione:
MobileDetectionMiddleware
Wbudowany middleware wykryć, czy użytkownik korzysta z przeglądarki telefonu, służył dobrze w produkcji, ale jest daleki od doskonałości, a także realizowane w bardzo uproszczony sposób. Można bezpiecznie usunąć ten middleware od ustawień i dodać własną wersję zamiast. Wystarczy upewnić się, że nazywa django_mobile.set_flavour w pewnym momencie, aby ustawić właściwy smak dla Ciebie.
Ustawienia
Oto lista ustawień, które są używane przez django-komórkowego i może być zmieniona w swoim własnym settings.py:
SMAKI
Lista dostępnych smaków na swojej stronie.
Domyślnie: ("pełny", "mobilny")
DEFAULT_MOBILE_FLAVOUR
Aromat jest wybrany jeśli wbudowana MobileDetectionMiddleware wykrywa mobilnej przeglądarki.
Domyślnie: telefon komórkowy
FLAVOURS_TEMPLATE_PREFIX
Ten napis będzie poprzedzona nazw szablonów, szukając smakowych szablonów. Jest to przydatne, jeśli masz wiele smaków i chcesz je przechowywać we wspólnym katalogu. Przykład:
z django.template.loader importu render_to_string
z django_mobile importu set_flavour
set_flavour ("mobilne")
render_to_string ('index.html') # uczyni 'przenośny / index.html "
# Teraz dodać do settings.py
FLAVOURS_TEMPLATE_PREFIX = "smaki /"
# I spróbuj ponownie
set_flavour ("mobilne")
render_to_string ("index.html") # uczyni "smaki / mobilne / index.html"
Domyślnie: "" (pusty ciąg znaków)
FLAVOURS_TEMPLATE_LOADERS
Szablon Ładowarka Django-Mobile może załadować szablony z przedrostkiem obecnego smaku. Określ, z tym ustawieniem, które używane są ładowarki do ładowania smakowych szablonów.
Domyślnie: jak TEMPLATE_LOADERS ustawień bez "django_mobile.loader.Loader".
FLAVOURS_GET_PARAMETER
Użytkownicy mogą zmienić smak chcą spojrzeć na z parametrem HTTP GET. Określa nazwę tego parametru. Ustaw na Brak, aby wyłączyć.
Domyślnie: "o smaku"
FLAVOURS_SESSION_KEY
Preferencji użytkownika ustawiony w parametrze GET jest przechowywana w sesji użytkownika. To ustawienie określa, który klucz sesji jest używane do przechowywania tych informacji.
Domyślnie: "o smaku"
Co nowego w tym wydaniu:.
- Dodane platforma uznając,
Co nowego w wersji 0.2.3:
- Poprawka: zestaw smaku we wszystkich przypadkach, nie tylko Jeśli wykryto mobile przeglądarki. Dzięki John P. Kiffmeyer dla raportu.
Wymagania :
- Python
- Django
Komentarze nie znaleziono