django-mobil er en Django app, der giver en enkel måde at opdage mobile browsere og giver dig værktøjer til din hånd at gøre nogle forskellige skabeloner til at levere en mobil version af dit websted til brugeren.
Ideen er at holde dine synspunkter nøjagtig det samme, men at en gennemsigtig udskifte skabelonerne bruges til at gengive et svar. Det sker i to trin:
1. En middleware bestemmer kundens præference for at se dit websted. F.eks hvis han ønsker at bruge det mobile smag eller den fulde desktop smag.
2. Skabelonen loader tager derefter hånd om at vælge de rigtige skabeloner baseret på smagen påvist i middleware.
Installation
Forudsætningerne: django_mobile afhænger rammer Django session. Så før du forsøger at bruge django_mobile sørge for, at rammerne sessioner er aktiveret og fungerer.
1. Installér django_mobile med din favorit python værktøj, fx med easy_install django_mobile eller pip installere django_mobile.
2. Tilsæt django_mobile til dine INSTALLED_APPS indstilling i settings.py.
3. Tilsæt django_mobile.middleware.MobileDetectionMiddleware til din MIDDLEWARE_CLASSES indstilling.
4. Tilsæt django_mobile.middleware.SetFlavourMiddleware til din MIDDLEWARE_CLASSES indstilling. Sørg for at det er opført efter MobileDetectionMiddleware og også efter SessionMiddleware.
5. Tilføj django_mobile.loader.Loader som første punkt på din TEMPLATE_LOADERS listen i settings.py.
6. Tilsæt django_mobile.context_processors.flavour til din TEMPLATE_CONTEXT_PROCESSORS indstilling.
Nu skulle du kunne bruge django-mobil i sin herlighed. Læs nedenfor om, hvordan tingene fungerer, og hvilke indstillinger kan blive fin til at ændre django-mobile adfærd.
Anvendelse
Begrebet django-mobil er bygget op omkring de ideer, forskellige varianter til dit websted. For eksempel den mobile version er beskrevet som en mulig smag, desktop-versionen som en anden.
Dette gør det muligt at tilvejebringe mange mulige udformninger i stedet for blot at skelne mellem en fuld desktop erfaring og en mobil version. Du kan lave flere mobile varianter til rådighed f.eks en for mobile Safari på iPhone og Android, samt en for Opera og en ekstra en for internet tablets som iPad.
Bemærk: Som standard django-mobile kun skelner mellem fuld og mobil smag.
Efter den rigtige smag er en eller anden måde valgt af middlewares, er det tildelt request.flavour attribut. Du kan bruge dette i dine synspunkter om at etablere særskilt logik.
Denne smag er så bruge til en gennemsigtig vælge brugerdefinerede skabeloner til dette særlige smag. Den valgte skabelon vil have den nuværende smag præfiks til skabelonnavnet du rent faktisk ønsker at gøre. Det betyder, at når render_to_response ("index.html", ...) kaldes med den mobile smag være aktiv rent faktisk vil returnere et svar gengivet med den mobile / index.html skabelon. Men hvis det flavored skabelon ikke er tilgængelig, vil yndefuldt fallback til standard index.html skabelon.
I nogle tilfælde dens ikke den ønskede måde at have en fuldstændig separat skabeloner til hver smag. Du kan også bruge {{smag}} skabelon variabel til kun ændre små aspekter af en enkelt skabelon. Et kort eksempel:
& Nbsp;
& Nbsp; ...
Dette vil tilføje (mobile version) til titlen på dit websted, hvis set med den mobile smag aktiveret.
Bemærk: Smagen skabelon variabel er kun tilgængelig, hvis du har oprettet django_mobile.context_processors.flavour kontekst processor og brugte Djangos RequestContext som kontekst instans at gøre skabelonen.
Ændring af nuværende smag
Den grundlæggende brug tilfælde af django-mobile er naturligvis at tjene en mobil version af dit websted til brugerne. Valget af den rigtige smag er normalt allerede gjort i de middlewares når dine egne synspunkter kaldes. I nogle tilfælde, du ønsker at ændre den aktuelt anvendte smag i din opfattelse eller et andet sted. Du kan gøre dette ved blot at kalde django_mobile.set_flavour (smag [, permanent = True]). Det første argument er selvforklarende. Men husk, at du kun kan passere i en smag, du er også i din FLAVOURS indstilling. Ellers set_flavour rejse en ValueError. De valgfrie permanente parametre definerer om ændringen af smag er huske for fremtidige anmodninger af samme klient.
Dine brugere kan indstille deres ønskede smag dem selv. De skal blot angive smag GET parameter på en anmodning til dit websted. Dette vil permanent vælger denne smag som deres præference for at se webstedet.
Du kan bruge denne GET parameter for at lade brugeren vælge fra dine tilgængelige varianter:
- Få den fulde oplevelse
& Nbsp; - Se vores mobile version
& Nbsp; - Se vores iPad-version
& Nbsp;
Bemærkninger om caching
Django er sejlads med nogle convenience metoder til at nemt cache dine synspunkter. En af dem er django.views.decorators.cache.cache_page. Problemet med caching en hel side i forbindelse med django-mobil er, at Djangos caching-system er ikke bekendt med varianter. Det betyder, at hvis den første anmodning til en side er tjent med en mobil smag, kan den anden anmodning også få en side gengivet med den mobile smag fra cachen - også selvom den anden anmodede en desktop browser.
Django-mobil er sejlads med sin egen implementering af cache_page at løse dette problem. Brug venligst django_mobile.cache.cache_page stedet for Django egen cache_page dekoratør.
Du kan også bruge Djangos caching middlewares django.middleware.cache.UpdateCacheMiddleware og FetchFromCacheMiddleware ligesom du allerede gør. Men for at gøre dem opmærksomme på smagsoplevelser, skal du tilføje django_mobile.cache.middleware.CacheFlavourMiddleware som næstsidste punkt i MIDDLEWARE_CLASSES indstillinger lige før FetchFromCacheMiddleware.
Reference
django_mobile.get_flavour ([anmodning] [standard])
& Nbsp; Få den aktive smag. Hvis der ikke smag kan bestemmes det vil vende tilbage standard. Dette kan ske, hvis set_flavour ikke blev kaldt før i den aktuelle anmodning-respons cyklus. standard standard det første punkt i Flavours indstilling.
django_mobile.set_flavour (smag, [anmodning] [permanent])
& Nbsp; Indstil smagen skal bruges til anmodning. Dette vil øge ValueError hvis smag ikke er i Flavours indstilling. Du kan prøve at sætte smag permanent for anmodning ved at føre permanente = True. Dette kan mislykkes, hvis du er ude af en anmodning-respons cyklus. anmode defaults til den aktuelt aktive anmodning.
django_mobile.context_processors.flavour
& Nbsp; Context processor, der tilføjer den aktuelle smag som smag til konteksten.
django_mobile.context_processors.is_mobile
& Nbsp; Denne sammenhæng processor vil tilføje en is_mobile variabel til den sammenhæng, der er sand hvis den nuværende smag lig DEFAULT_MOBILE_FLAVOUR indstilling.
django_mobile.middleware.SetFlavourMiddleware
& Nbsp; sørger for at indlæse den lagrede smag fra brugerens session, hvis indstillet. Også sætter den aktuelle anmodning til en tråd-lokal variabel. Dette er nødvendigt for at tilvejebringe get_flavour () funktionalitet uden at have adgang til objektet anmodning.
django_mobile.middleware.MobileDetectionMiddleware
& Nbsp; Registrerer hvis en mobil browser forsøger at få adgang til webstedet og sætter smag til DEFAULT_MOBILE_FLAVOUR indstillinger værdi i sagen.
django_mobile.cache.cache_page
& Nbsp; Samme som Djangos cache_page dekoratør, men anvender vary_on_flavour før visningen er dekoreret med django.views.decorators.cache.cache_page.
django_mobile.cache.vary_on_flavour
& Nbsp; En dekoratør skabt fra CacheFlavourMiddleware middleware.
django_mobile.cache.middleware.CacheFlavourMiddleware
& Nbsp; Tilføjer X-Flavour header til request.META i process_request og tilføjer denne header til svar ['Vary'] i process_response.
Tilpasning
Der er nogle punkter til rådighed, så du kan tilpasse adfærd django-mobile. Her er nogle muligheder, der er anført:
MobileDetectionMiddleware
Den indbyggede middleware at opdage, hvis brugeren anvender en mobil browser fungerede godt i produktionen, men er langt fra perfekt, og også gennemført i en meget forenklet måde. Du kan trygt fjerne denne middleware fra dine indstillinger og tilføje din egen version i stedet. Bare sørg for, at det kalder django_mobile.set_flavour på et tidspunkt for at indstille den rigtige smag for dig.
Indstillinger
Her er en liste over indstillinger, der bruges af Django-mobile og kan ændres i din egen settings.py:
FLAVOURS
En liste over tilgængelige varianter for din hjemmeside.
Standard: ("fuld", "mobil")
DEFAULT_MOBILE_FLAVOUR
Den smag, som er valgt, hvis den indbyggede MobileDetectionMiddleware detekterer en mobil browser.
Standard: mobil
FLAVOURS_TEMPLATE_PREFIX
Denne streng vil blive foranstillet til skabelonen navne, når du søger efter smag skabeloner. Dette er nyttigt hvis du har mange varianter og vil gemme dem i en fælles undermappe. Eksempel:
fra django.template.loader import render_to_string
fra django_mobile import set_flavour
set_flavour (mobil)
render_to_string ('index.html') # vil gøre "mobil / index.html '
# Nu tilføje dette til settings.py
FLAVOURS_TEMPLATE_PREFIX = 'smag / "
# Og prøv igen
set_flavour (mobil)
render_to_string ('index.html') # vil gøre 'smag / mobil / index.html'
Standard: '' (tom streng)
FLAVOURS_TEMPLATE_LOADERS
Django-Mobiles skabelon loader kan indlæse skabeloner præfixet den aktuelle smag. Angiv med denne indstilling, som læssere anvendes til at indlæse aromatiseret skabeloner.
Standard: samme som TEMPLATE_LOADERS indstilling, men uden "django_mobile.loader.Loader«.
FLAVOURS_GET_PARAMETER
Brugere kan ændre smag, de vil se på en HTTP GET parameter. Dette bestemmer navnet på denne parameter. Sæt den til Ingen for at deaktivere.
Standard: 'smag'
FLAVOURS_SESSION_KEY
Brugerens præferencer indstillet med GET parameter lagres i brugerens session. Denne indstilling bestemmer, hvilken session nøgle bruges til at holde disse oplysninger.
Standard: "smag"
Hvad er nyt i denne udgivelse:.
- Tilføjet platform anerkende
Hvad er nyt i version 0.2.3:
- Rettelse: sæt smag i alle tilfælde, ikke kun hvis der registreres en mobil browser. Takket være John P. Kiffmeyer for rapporten.
Krav :
- Python
- Django
Kommentarer ikke fundet