django-mobil är en Django app som ger ett enkelt sätt att upptäcka mobila webbläsare och ger dig verktyg till din hand att göra några olika mallar för att leverera en mobil version av webbplatsen för användaren.
Tanken är att hålla dina synpunkter exakt samma men att transparent utbyta de mallar som används för att göra ett svar. Detta görs i två steg:
1. En middle avgör kundens önskemål för att visa din webbplats. T.ex. om han vill använda den mobila smak eller hela skrivbordet smak.
2. Mallen lastaren tar sedan hand om att välja rätt mallar baserade på smak detekteras i middleware.
Installation
Pre-Krav: django_mobile beror på sessions ram django s. Så innan du försöker använda django_mobile se till att ramen sessioner är aktiverad och fungerar.
1. Installera django_mobile med din favorit python verktyg, t.ex. med easy_install django_mobile eller PIP installera django_mobile.
2. Lägg django_mobile till dina INSTALLED_APPS inställning i settings.py.
3. Lägg django_mobile.middleware.MobileDetectionMiddleware till din MIDDLEWARE_CLASSES inställning.
4. Lägg django_mobile.middleware.SetFlavourMiddleware till din MIDDLEWARE_CLASSES inställning. Se till att det finns med efter MobileDetectionMiddleware och även efter SessionMiddleware.
5. Lägg django_mobile.loader.Loader som första punkt på din TEMPLATE_LOADERS listan i settings.py.
6. Lägg django_mobile.context_processors.flavour till din TEMPLATE_CONTEXT_PROCESSORS inställning.
Nu bör du kunna använda django-mobil i sin glans. Läs nedan om hur saker fungerar och vilka inställningar kan finjusteras för att modifiera django-mobil beteende.
Användning
Begreppet django-mobil är byggd runt idéer olika smaker för din webbplats. Till exempel den mobila versionen beskrivs som en möjlig smak, den stationära versionen som en annan.
Detta gör det möjligt att ge många möjliga mönster istället för att bara skilja mellan ett fullständigt skrivbordsupplevelse och en mobil version. Du kan göra flera mobila smaker tillgängliga t.ex. en för mobila safari på iPhone och Android samt en för Opera och en extra en för internet tabletterna som iPad.
Obs: som standard django-mobil skiljer endast mellan full och mobil smak.
Efter rätt smak på något sätt väljs av middlewares, det delad request.flavour attributet. Du kan använda detta i era åsikter för att ge separata logik.
Denna smak är sedan använda för att öppet välja egna mallar för detta speciella smak. Den valda mallen kommer att ha den nuvarande smak prefixed till mallnamnet du verkligen vill göra. Det innebär att när render_to_response ("index.html", ...) kallas med mobil smaken vara aktiv kommer faktiskt tillbaka ett svar återges med mobil / index.html mall. Men om det smaksatt mall inte är tillgänglig kommer det graciöst återgång till standard index.html mallen.
I vissa fall dess inte önskat sätt att ha en helt separat mallar för varje smak. Du kan också använda {{smaken}} mallvariabeln att bara ändra små aspekter av en och samma mall. Ett kort exempel:
& Nbsp;
& Nbsp; ...
Detta kommer att lägga till (mobila versionen) till titeln på din webbplats om ses med den mobila smak aktiverat.
Obs: Smaken mallvariabeln är endast tillgänglig om du har ställt upp django_mobile.context_processors.flavour sammanhanget processorn och används django s RequestContext som kontext instans att göra mallen.
Ändra nuvarande smaken
Den grundläggande användning vid django-mobil är naturligtvis att tjäna en mobil version av din webbplats till användarna. Valet av rätt smak är oftast redan gjort i middlewares när dina egna åsikter kallas. I vissa fall du vill ändra nuvarande smak i din syn eller någon annanstans. Du kan göra detta genom att helt enkelt ringa django_mobile.set_flavour (smak [, permanent = Sant]). Det första argumentet är självförklarande. Men tänk på att du bara kan passera i en smak som du också i ditt SMAKER inställning. Annars set_flavour höjer ett ValueError. De valfria permanenta parametrar definierar om ändringen av smaken är ihåg för framtida förfrågningar från samma klient.
Användarna kan ställa in sin önskad smak dem själv. De behöver bara ange smaken GET parametern på en begäran till din webbplats. Detta kommer att permanent välja denna smak som de föredrar att visa platsen.
Du kan använda denna GET parametern för att låta användaren välja från dina tillgängliga smaker:
- Få hela upplevelsen
& Nbsp; - Visa vårt mobila versionen
& Nbsp; - Visa vårt iPad version
& Nbsp;
Anmärkningar om caching
Django levererar med några bekvämlighets metoder för att enkelt cache dina åsikter. En av dem är django.views.decorators.cache.cache_page. Problemet med att cacha en hel sida i samband med django-mobil är, att django s cachningssystem är inte medveten om smaker. Detta innebär att om den första begäran till en sida serveras med en mobil smak, kanske den andra begäran också få en sida återges med mobil smaken från cachen - även om den andra begärdes av en webbläsare.
django-mobil är sjöfarten med egen tillämpning av cache_page att lösa problemet. Vänligen använd django_mobile.cache.cache_page istället för django egen cache_page dekoratör.
Du kan också använda django s caching middlewares django.middleware.cache.UpdateCacheMiddleware och FetchFromCacheMiddleware som du redan gör. Men för att göra dem medvetna om smaker, måste du lägga django_mobile.cache.middleware.CacheFlavourMiddleware som näst sista punkt i MIDDLEWARE_CLASSES inställningarna precis innan FetchFromCacheMiddleware.
Referens
django_mobile.get_flavour ([begäran] [standard])
& Nbsp; Få aktiva smaken. Om ingen smak kan fastställas den ger standard. Detta kan hända om set_flavour inte kallades tidigare i den aktuella begäran-respons cykel. standard standard det första objektet i inställning SMAKER.
django_mobile.set_flavour (smak, [begäran] [permanent])
& Nbsp; Ställ smaken som ska användas för begäran. Detta kommer att höja ValueError om smak är inte i inställningen FLAVOURS. Du kan prova att ställa smaken permanent för förfrågan genom att permanenta = Sant. Detta kan misslyckas om du är ute för en begäran-respons cykel. begära defaults till den aktuella begäran.
django_mobile.context_processors.flavour
& Nbsp; Context processor som lägger den nuvarande smak som smak till sammanhanget.
django_mobile.context_processors.is_mobile
& Nbsp; Denna kontext processor kommer att lägga ett is_mobile variabel till sammanhanget som är sant om den nuvarande smaken är lika med inställningen DEFAULT_MOBILE_FLAVOUR.
django_mobile.middleware.SetFlavourMiddleware
& Nbsp; Tar hand om lastning lagrade smak från användarens session om den är inställd. Ställer även den aktuella begäran till en tråd-lokal variabel. Detta behövs för att ge get_flavour () funktion utan att ha tillgång till begäran objektet.
django_mobile.middleware.MobileDetectionMiddleware
& Nbsp; Detekterar om en mobil webbläsare försöker komma åt webbplatsen och sätter smak till DEFAULT_MOBILE_FLAVOUR inställningar värde i fallet.
django_mobile.cache.cache_page
& Nbsp; Samma som django s cache_page dekoratör men tillämpar vary_on_flavour innan vyn är dekorerad med django.views.decorators.cache.cache_page.
django_mobile.cache.vary_on_flavour
& Nbsp; En dekoratör skapas från CacheFlavourMiddleware middleware.
django_mobile.cache.middleware.CacheFlavourMiddleware
& Nbsp; Lägger X-Flavour header till request.META i process_request och lägger denna rubrik till svar ['Variera'] i process_response.
Anpassning
Det finns några punkter som finns som låter dig anpassa beteendet hos django-mobil. Här är några möjligheter som räknas:
MobileDetectionMiddleware
Den inbyggda middleware för att upptäcka om användaren använder en mobil webbläsare som serveras väl i produktionen men är långt ifrån perfekt och även implementeras på ett mycket förenklat sätt. Du kan ta bort den här middle från dina inställningar och lägga till din egen version istället. Se bara till att den kallar django_mobile.set_flavour någon gång för att ställa in rätt smak för dig.
Inställningar
Här är en lista över inställningar som används av django-mobil och kan ändras i ditt eget settings.py:
FLAVOURS
En lista över tillgängliga smaker för din webbplats.
Standard: ("full", "mobil")
DEFAULT_MOBILE_FLAVOUR
Smaken som väljs om den inbyggda MobileDetectionMiddleware detekterar en mobil webbläsare.
Standard: mobil
FLAVOURS_TEMPLATE_PREFIX
Denna sträng kommer att föregås av mallnamn när du söker efter smaksatt mallar. Detta är användbart om du har många smaker och vill lagra dem i ett gemensamt underkatalog. Exempel:
från django.template.loader import render_to_string
från django_mobile import set_flavour
set_flavour ("rörliga")
render_to_string ("index.html") # kommer att göra "mobil / index.html '
# Nu lägga detta till settings.py
FLAVOURS_TEMPLATE_PREFIX = 'smaker /'
# Och försök igen
set_flavour ("rörliga")
render_to_string ("index.html") # kommer att göra "smaker / mobil / index.html '
Standard: '' (tom sträng)
FLAVOURS_TEMPLATE_LOADERS
django-mobil mall lastare kan ladda mallar inleds med den nuvarande smaken. Ange med denna inställning som lastare används för att ladda smaksatt mallar.
Standard: samma som TEMPLATE_LOADERS inställning men utan "django_mobile.loader.Loader".
FLAVOURS_GET_PARAMETER
Användare kan ändra smak de vill titta på med en HTTP GET-parametern. Detta bestämmer namnet på denna parameter. Ställ in den till Ingen för att inaktivera.
Standard: "smak"
FLAVOURS_SESSION_KEY
Användarens inställningsuppsättningen med GET parametern lagras i användarens session. Denna inställning avgör vilken sessionsnyckel används för att hålla den här informationen.
Standard: "smak"
Vad är nytt i den här versionen:.
- Inkom plattform erkänner
Vad är nytt i version 0.2.3:
- FIX: set smak i alla fall, inte bara Om en mobil webbläsare upptäcks. Tack vare John P. Kiffmeyer för rapporten.
Krav :
- Python
- Django
Kommentarer hittades inte