django-mobil, mobil tarayıcılar algılamak için basit bir yol sağlar ve kullanıcıya sitenizin mobil sürümünü sunmak için bazı farklı şablonlar işlemek için elinizde araçları verir Django uygulaması.
Fikir aynı görüşlerinizi tutmak ama şeffaf bir yanıt oluşturmak için kullanılan şablonlar verişi olduğunu. Bu iki adımda yapılır:
1. Bir katman sitenizi görüntülemek için müşterinin tercihi belirler. Örneğin O mobil lezzet ya da tam masaüstü lezzet kullanmak istiyorsa.
2. şablon yükleyici katman tespit lezzet göre doğru şablonları seçerek sonra ilgilenir.
Kurulum
Ön Gereksinimler: django_mobile Django'nın oturumu çerçevesinde bağlıdır. Eğer django_mobile kullanmak oturumları çerçevesi etkin ve çalışıyor olduğundan emin olmak için deneyin önce Yani.
1. örneğin sevdiğiniz piton aracıyla django_mobile yükleyin easy_install django_mobile veya django_mobile gerekmektedir pip.
2. settings.py ayarını sizin INSTALLED_APPS için django_mobile ekleyin.
3. MIDDLEWARE_CLASSES ayarı django_mobile.middleware.MobileDetectionMiddleware ekleyin.
4. MIDDLEWARE_CLASSES ayarı django_mobile.middleware.SetFlavourMiddleware ekleyin. O MobileDetectionMiddleware sonra da SessionMiddleware sonra listelenir emin olun.
5. settings.py içinde TEMPLATE_LOADERS listesine ilk madde olarak django_mobile.loader.Loader ekleyin.
6. TEMPLATE_CONTEXT_PROCESSORS ayarı django_mobile.context_processors.flavour ekleyin.
Şimdi görkemiyle Django-mobil kullanmak gerekir. Işlerin ve hangi ayarların django-mobil davranışını değiştirmek için tweaked nasıl aşağıda okuyun.
Kullanım
Django-mobil kavramı siteniz için farklı tatlar fikirler etrafında inşa edilir. Örneğin mobil versiyonu olası bir lezzet, bir başka gibi masaüstü versiyonu olarak tarif edilir.
Bu mümkün, sadece tam bir masaüstü deneyimi ve bir mobil versiyonu arasında ayırt yerine birçok olası tasarımlar sunmak için yapar. Birden mobil tatlar mevcut örneğin yapabilirsiniz Mobil iPhone ve Android safari yanı sıra Opera biri ve iPad gibi internet tablet için ekstra bir biri için bir.
Not: Varsayılan django-By mobile sadece tam ve mobil lezzet birbirinden ayırır.
Doğru lezzet şekilde ara katman tarafından seçildikten sonra, bu request.flavour özniteliği atanmış. Ayrı mantığı sağlamak için görünümleri kullanabilirsiniz.
Bu lezzet daha sonra şeffaf, bu özel lezzet için özel şablonlar seçmek için kullanın edilir. Seçilen şablon aslında işlemek istediğiniz şablon adının önüne geçerli lezzet olacaktır. Render_to_response ('index.html', ...) mobil lezzet aslında mobil / index.html şablonla işlenen bir yanıt dönecektir aktif olmak çağrıldığında bu demektir. Bu aromalı şablonu mevcut değilse Ancak incelikle varsayılan index.html şablonuna çare olacaktır.
Bazı durumlarda onun değil istenen yolu, her lezzet için tamamen ayrı şablonlar var. Ayrıca sadece tek bir şablonun küçük yönlerini değiştirmek için {{}} şablonu lezzet değişkeni kullanabilirsiniz. Kısa bir örnek:
& Nbsp;
& Nbsp; ...
Özellikli mobil lezzet ile inceledi Bu sitenizin başlığı (mobil versiyonu) ekleyecektir.
Not: Eğer django_mobile.context_processors.flavour bağlam işlemci kurmak ve şablon işlemek için bağlam örneği olarak Django'nın RequestContext kullandıysanız lezzet şablon değişkeni kullanılabilir.
Mevcut lezzet değiştirme
Django-mobil temel kullanım durumunda kullanıcılara sitenizin mobil sürümünü hizmet etmek olduğu açıktır. Kendi görüşleri denir, doğru lezzet seçimi genellikle zaten ara katman yapılır. Bazı durumlarda size görünümü veya başka bir yerde şu anda kullanılan lezzet değiştirmek istiyorum. Sadece django_mobile.set_flavour arayarak yapabilirsiniz (lezzet [kalıcı = true]). İlk argüman kendini açıklayan. Ama sadece sizin AROMALAR ayarında da bir lezzet iletebilirsiniz unutmayın. Aksi takdirde set_flavour bir ValueError çıkaracağız. lezzet değişikliği aynı istemci gelecek istekler için hatırlıyorum ise isteğe bağlı kalıcı parametreler tanımlar.
Sizin kullanıcıların istenen lezzet onları kendine ayarlayabilirsiniz. Onlar sadece sitenize bir istek üzerine lezzet GET parametresi belirtmeniz gerekir. Bu kalıcı sitesini görüntülemek için kendi tercihleri olarak bu lezzet seçecektir.
Siz kullanıcı mevcut tatlar arasından seçim bildirmek için bu GET parametresini kullanabilirsiniz:
- Tam deneyimini yaşayın
& Nbsp; - Mobil sürüm görüntüle
& Nbsp; - Bizim iPad sürümünü görüntüle
& Nbsp;
Önbelleğe alma ile ilgili notlar
Django kolayca görüşlerini önbelleğe bazı kolaylık yöntemleri ile nakliye. Bunlardan biri django.views.decorators.cache.cache_page olup. Django-mobil ile birlikte bir bütün sayfayı önbelleğe sorun o Django'nın önbelleğe alma sistemi tatlar farkında değildir, değildir. İkinci bir masaüstü tarayıcısı tarafından talep edilmiş olsa bile - Bu sayfaya ilk istek mobil lezzet ile servis edilir ise, ikinci isteği de önbellek mobil lezzet ile işlenen bir sayfa alabilirsiniz anlamına gelir.
Django-mobil, bu sorunu gidermek için cache_page olan bu kendi uygulama ile nakliye. Django_mobile.cache.cache_page yerine Django kendi cache_page dekoratör kullanın.
Zaten yaptığın gibi de Django'nın önbellek ara katman django.middleware.cache.UpdateCacheMiddleware ve FetchFromCacheMiddleware kullanabilirsiniz. Ama tatlar onları haberdar etmek, doğru FetchFromCacheMiddleware önce, MIDDLEWARE_CLASSES ayarlarında ikinci son öğesi olarak django_mobile.cache.middleware.CacheFlavourMiddleware eklemeniz gerekir.
Başvuru
django_mobile.get_flavour ([istek], [varsayılan])
& Nbsp; şu anda aktif lezzet alın. Hiçbir lezzet tespit edilebilir Eğer varsayılan dönecektir. Set_flavour mevcut istek-yanıt döngüsü önce çağrılmadı oluşabilir. AROMALAR ortamda ilk öğeye varsayılan varsayılan.
django_mobile.set_flavour (lezzet, [istek], [kalıcı])
& Nbsp; istek için kullanılmak üzere bir lezzet ayarlayın. Lezzet AROMALAR ayarında değilse bu ValueError çıkaracağız. True kalıcı = geçerek istek için kalıcı lezzet ayarlamak için deneyebilirsiniz. Eğer bir istek-yanıt döngüsü dışında iseniz bu başarısız olabilir. Şu anda aktif isteği varsayılan talep.
django_mobile.context_processors.flavour
& Nbsp; bağlama lezzet olarak geçerli lezzet katıyor Bağlam işlemci.
django_mobile.context_processors.is_mobile
& Nbsp; Bu bağlam işlemci mevcut lezzet DEFAULT_MOBILE_FLAVOUR ayarını eşitse True bağlamda bir is_mobile değişken katacak.
django_mobile.middleware.SetFlavourMiddleware
& Nbsp; ayarlarsanız kullanıcının oturumu saklı lezzet yükleme ilgilenir. Ayrıca bir iş parçacığı yerel değişkene geçerli isteği ayarlar. Bu istek nesnesine erişim kalmadan get_flavour () işlevselliği sağlamak için gereklidir.
django_mobile.middleware.MobileDetectionMiddleware
& Nbsp; mobil tarayıcı sitesine erişmeye çalıştığında ve durumda ayarları değerini DEFAULT_MOBILE_FLAVOUR lezzet ayarlar eğer algılar.
django_mobile.cache.cache_page
& Nbsp; görünüm django.views.decorators.cache.cache_page ile dekore önce Django'nın cache_page dekoratör olarak aynı ama vary_on_flavour uygular.
django_mobile.cache.vary_on_flavour
& Nbsp; CacheFlavourMiddleware katman oluşturulan bir dekoratör.
django_mobile.cache.middleware.CacheFlavourMiddleware
& Nbsp; process_request içinde request.META için ekler X-Lezzet başlık ve process_response içinde ['Vary'] cevap bu başlık ekler.
Özelleştirme
Eğer django-mobil davranışını özelleştirmek izin mevcut bazı noktalar vardır. İşte listede bazı olasılıklar şunlardır:
MobileDetectionMiddleware
bir mobil tarayıcıyı kullanarak kullanıcı üretiminde de hizmet ama mükemmel olmaktan uzak ve de uygulanan çok basit bir şekilde eğer yerleşik katman tespit etmek. Siz güvenle ayarlarından bu katman kaldırmak ve bunun yerine kendi versiyonunu ekleyebilirsiniz. Sadece sizin için doğru bir lezzet ayarlamak için bir noktada django_mobile.set_flavour çağırır emin olun.
Ayarlar
İşte Django-mobil tarafından kullanılan ve kendi settings.py değiştirilebilir ayarların bir listesi:
AROMALAR
Siteniz için kullanılabilir tatlar listesi.
Varsayılan: ('tam', 'mobil')
DEFAULT_MOBILE_FLAVOUR
Yerleşik MobileDetectionMiddleware bir mobil tarayıcı algılarsa seçilir lezzet.
Varsayılan: Mobil
FLAVOURS_TEMPLATE_PREFIX
Aromalı şablonlar ararken dize şablon adları önüne alınacaktır. Birçok tatlar var ve ortak bir alt dizininde depolamak istiyorsanız bu kullanışlıdır. Örnek:
django.template.loader ithalat render_to_string gelen
django_mobile ithalat set_flavour gelen
set_flavour ('mobil')
('index.html') # render_to_string kılacaktır 'mobil / index.html'
# Şimdi settings.py bu ekleyin
FLAVOURS_TEMPLATE_PREFIX = 'tatlar /'
# Ve tekrar deneyin
set_flavour ('mobil')
# kılacak render_to_string ('index.html') 'tatlar / mobil / index.html'
Varsayılan: '' (boş dize)
FLAVOURS_TEMPLATE_LOADERS
Django-mobil şablon yükleyici geçerli lezzet ile öneki şablonları yükleyebilirsiniz. Yükleyiciler aromalı şablonları yüklemek için kullanılan bu ayar ile belirtin.
Varsayılan: ayar TEMPLATE_LOADERS olarak değil 'django_mobile.loader.Loader' olmadan aynı.
FLAVOURS_GET_PARAMETER
Kullanıcılar bir HTTP GET parametresi ile bakmak istediğiniz lezzet değiştirebilirsiniz. Bu, bu parametrenin adını belirler. Devre dışı bırakmak için Yok olarak ayarlayın.
Varsayılan: 'lezzet'
FLAVOURS_SESSION_KEY
GET parametresi ile ayarlanan kullanıcının tercihi kullanıcının oturumuna saklanır. Bu ayar, bu bilgileri tutmak için kullanılan oturum anahtarı belirler.
Varsayılan: 'lezzet'
Bu sürümdeki yeni nedir:.
- eklendi platformu tanıma
nedir sürüm 0.2.3 Yeni:
- Düzeltme: her durumda set lezzet, sadece eğer bir mobil tarayıcı tespit edilir. Raporun John P. Kiffmeyer için teşekkürler.
Gereksinimler :
- Python
- Django
Yorum Bulunamadı