django-mobile is een Django app die een eenvoudige manier om mobiele browsers detecteren biedt en geeft u tools tot je hand om een aantal verschillende sjablonen maken om een mobiele versie van uw site te leveren aan de gebruiker.
Het idee is om uw mening precies hetzelfde te houden, maar om transparant interchange de sjablonen gebruikt om een reactie te geven. Dit gebeurt in twee stappen:
1. Een middleware bepaalt de voorkeur van de klant naar uw site te bekijken. Bijv. als hij wil naar de mobiele smaak of de volledige desktop smaak gebruiken.
2. De template lader zorgt vervolgens voor het kiezen van de juiste templates basis van de gedetecteerde in de middleware smaak.
installatie
Pre-Vereisten: django_mobile afhankelijk van sessie kader Django's. Dus voordat je probeert om django_mobile gebruiken ervoor zorgen dat de sessies kader is ingeschakeld en werkt.
1. Installeer django_mobile met uw favoriete python tool, bv met easy_install django_mobile of pip django_mobile installeren.
2. django_mobile Voeg toe aan je INSTALLED_APPS instelling in het settings.py.
3. Voeg django_mobile.middleware.MobileDetectionMiddleware uw MIDDLEWARE_CLASSES setting.
4. Voeg django_mobile.middleware.SetFlavourMiddleware uw MIDDLEWARE_CLASSES setting. Zorg ervoor dat het wordt vermeld na MobileDetectionMiddleware en ook na SessionMiddleware.
5. django_mobile.loader.Loader Voeg als eerste item toe aan uw lijst TEMPLATE_LOADERS in settings.py.
6. django_mobile.context_processors.flavour toevoegen aan je TEMPLATE_CONTEXT_PROCESSORS setting.
Nu moet je in staat zijn om django-mobiel te gebruiken in zijn glorie. Lees hieronder hoe de dingen werken en welke instellingen kunnen worden getweakt om het gedrag van django-mobile te wijzigen.
Gebruik
Het concept van django-mobile is opgebouwd rond de ideeën van verschillende smaken voor uw site. Bijvoorbeeld de mobiele versie wordt beschreven als een van de mogelijke smaak, de desktop-versie als een ander.
Dit maakt het mogelijk om vele mogelijke ontwerpen bieden plaats van onderscheid tussen een volledige desktop ervaring en een mobiele versie. U kunt meerdere mobiele smaken verkrijgbaar bv maken één voor de mobiele Safari op de iPhone en Android, evenals een voor Opera en een extra een voor internet tablets zoals de iPad.
Opmerking: Standaard django-mobile alleen onderscheid gemaakt tussen volledige en mobiele smaak.
Na de juiste smaak enigszins wordt gekozen door de middlewares, is toegewezen aan het kenmerk request.flavour. U kunt dit gebruiken in je uitzicht op aparte logica bieden.
Deze smaak wordt dan gebruikt om transparant te kiezen aangepaste sjablonen voor deze speciale smaak. De geselecteerde sjabloon wordt de huidige smaak voorafgegaan aan de template naam je eigenlijk wilt maken te hebben. Dit betekent dat wanneer render_to_response ("index.html", ...) wordt aangeroepen met de mobiele smaak actief daadwerkelijk retourneren een reactie weergegeven met het mobiele / index.html template. Maar als dit op smaak template niet beschikbaar is zal het sierlijk Terugvallen op de standaard index.html template.
In sommige gevallen zijn niet de gewenste manier om een volledig gescheiden sjablonen voor elke smaak. U kunt ook de {{smaak}} sjabloon variabele gebruiken om slechts kleine aspecten van één sjabloon te wijzigen. Een kort voorbeeld:
& Nbsp;
& Nbsp; ...
Dit zal (mobiele versie) toe te voegen aan de titel van uw site als bekeken met de mobiele smaak ingeschakeld.
Opmerking: De smaak template variabele is alleen beschikbaar als u het opzetten van de django_mobile.context_processors.flavour context processor en gebruikt RequestContext Django's als context bijvoorbeeld om de sjabloon te maken.
Het veranderen van de huidige smaak
De basis use case van django-mobile is uiteraard om een mobiele versie van uw site aan gebruikers. De selectie van de juiste smaak is meestal al gedaan in de middlewares wanneer uw eigen opvattingen worden genoemd. In sommige gevallen wilt u de momenteel gebruikte smaak in je oog of ergens anders te veranderen. U kunt dit doen door simpelweg te bellen django_mobile.set_flavour (smaak [, permanente = True]). Het eerste argument is zelf uit te leggen. Maar houd in gedachten dat je alleen kunt passeren in een smaak die u ook in uw FLAVOURS setting. Anders set_flavour zal een ValueError verhogen. De optionele vaste parameters bepaalt of de wijziging van de smaak wordt onthouden voor toekomstige verzoeken van dezelfde klant.
Uw gebruikers kunnen hun gewenste smaak hen zelf in te stellen. Ze hoeven alleen maar naar de parameter smaak krijgen op een verzoek om uw website te geven. Dit zal permanent deze smaak als hun voorkeur om de site te bekijken te kiezen.
U kunt deze GET parameter gebruiken om de gebruiker te laten kiezen uit uw beschikbare smaken:
- Krijg de volledige ervaring
& Nbsp; - Bekijk onze mobiele versie
& Nbsp; - Bekijk onze iPad-versie
& Nbsp;
Opmerkingen over het caching
Django is verzending met enkele gemak methoden om gemakkelijk de cache van uw uitzicht. Een van hen is django.views.decorators.cache.cache_page. Het probleem met het cachen van een hele pagina in combinatie met django-mobile is, dat Django caching systeem is zich niet bewust van smaken. Dit betekent dat als het eerste verzoek om een pagina wordt geserveerd met een mobiele smaak, kan het tweede verzoek ook een pagina weergegeven met de mobiele smaak van de cache - zelfs als de tweede door een desktop browser gevraagd.
django-mobile is verzending met een eigen uitvoering van cache_page om dit probleem op te lossen. Gebruik django_mobile.cache.cache_page plaats van Django's eigen cache_page decorateur.
U kunt ook gebruik maken van Django's caching middlewares django.middleware.cache.UpdateCacheMiddleware en FetchFromCacheMiddleware zoals je al doet. Maar om hen bewust te maken van smaken te maken, moet je django_mobile.cache.middleware.CacheFlavourMiddleware als tweede laatste item toe te voegen in de MIDDLEWARE_CLASSES instellingen, vlak voor FetchFromCacheMiddleware.
Referentie
django_mobile.get_flavour ([verzoek] [standaard])
& Nbsp; Krijg het actieve smaak. Als geen smaak kan worden bepaald het zal standaard terugkeren. Dit kan gebeuren als set_flavour niet eerder werd genoemd in de huidige request-response cyclus. Standaard staat standaard op het eerste item in de instelling FLAVOURS.
django_mobile.set_flavour (smaak, [verzoek] [permanente])
& Nbsp; Stel de smaak te worden gebruikt voor de aanvraag. Dit zal verhogen ValueError als smaak is niet in de setting FLAVOURS. U kunt proberen om de smaak vast te stellen voor de aanvraag door het passeren van permanente = True. Dit kan mislukken als je uit een request-response cyclus. verzoeken standaard de huidige actieve aanvraag.
django_mobile.context_processors.flavour
& Nbsp; Context processor die de huidige smaak toevoegt als smaakversterker de context.
django_mobile.context_processors.is_mobile
& Nbsp; Deze context processor zal een is_mobile variabele toe te voegen aan de context waar is als de huidige smaak is gelijk aan de DEFAULT_MOBILE_FLAVOUR instelling.
django_mobile.middleware.SetFlavourMiddleware
& Nbsp; Draagt zorg voor het laden van de opgeslagen smaak van sessie van de gebruiker indien ingesteld. Ook wordt de huidige verzoek om een thread-lokale variabele. Dit is nodig om get_flavour () functionaliteit zonder toegang tot het object request.
django_mobile.middleware.MobileDetectionMiddleware
& Nbsp; Detecteert of een mobiele browser probeert te krijgen tot de site en zet de smaak aan instellingen van de waarde DEFAULT_MOBILE_FLAVOUR voor het geval dat.
django_mobile.cache.cache_page
& Nbsp; Zelfde als Django's cache_page decorateur maar geldt vary_on_flavour voordat het uitzicht is versierd met django.views.decorators.cache.cache_page.
django_mobile.cache.vary_on_flavour
& Nbsp; Een decorateur gemaakt op basis van de CacheFlavourMiddleware middleware.
django_mobile.cache.middleware.CacheFlavourMiddleware
& Nbsp; Voegt X-Flavour header om request.META in process_request en voegt deze header te respons ['Vary'] in process_response.
Customization
Er zijn een aantal punten beschikbaar waarmee u het gedrag van django-mobile te passen. Hier zijn een aantal mogelijkheden opgesomd:
MobileDetectionMiddleware
De ingebouwde middleware om te detecteren of de gebruiker wordt met behulp van een mobiele browser goed geserveerd in productie, maar is verre van perfect en eveneens uitgevoerd in een zeer simplistische manier. U kunt deze middleware veilig verwijderen van uw instellingen en voeg uw eigen versie plaats. Zorg er wel voor dat het roept django_mobile.set_flavour op een gegeven moment om de juiste smaak te stellen voor jou.
Instellingen
Hier is een lijst van instellingen die worden gebruikt door django-mobiel en kan in uw eigen settings.py worden gewijzigd:
SMAKEN
Een lijst van beschikbare smaken voor uw site.
Standaard: ('vol', 'mobile')
DEFAULT_MOBILE_FLAVOUR
De smaak die wordt gekozen indien de ingebouwde MobileDetectionMiddleware detecteert een mobiele browser.
Standaard: mobiel
FLAVOURS_TEMPLATE_PREFIX
Deze regel wordt voorafgegaan aan de sjabloon namen bij het zoeken naar gearomatiseerde sjablonen. Dit is handig als u veel smaken en willen ze op te slaan in een gemeenschappelijke subdirectory. Voorbeeld:
van django.template.loader import render_to_string
van django_mobile import set_flavour
set_flavour ('mobiele')
render_to_string ('index.html') # zal maken 'mobile / index.html'
# Voeg deze nu aan settings.py
FLAVOURS_TEMPLATE_PREFIX = "smaken / '
# En probeer het opnieuw
set_flavour ('mobiele')
render_to_string ('index.html') # zal maken 'smaken / mobile / index.html'
Standaard: '' (lege string)
FLAVOURS_TEMPLATE_LOADERS
django-mobile's template loader kunt sjablonen voorafgegaan door de huidige smaak te laden. Specificeren met deze instelling, die laders worden gebruikt voor het op smaak templates laden.
Standaard: zelfde als TEMPLATE_LOADERS instellen, maar zonder 'django_mobile.loader.Loader'.
FLAVOURS_GET_PARAMETER
Gebruikers kunnen de smaak ze willen om naar te kijken met een HTTP GET parameter te wijzigen. Dit bepaalt de naam van deze parameter. Stel deze in op Geen om te schakelen.
Standaard: 'smaak'
FLAVOURS_SESSION_KEY
Voorkeur van de gebruiker ingesteld met de parameter GET wordt opgeslagen in de sessie van de gebruiker. Deze instelling bepaalt welke sessie sleutel wordt gebruikt om deze informatie te houden.
Standaard: 'smaak'
Wat is nieuw in deze release:.
- Toegevoegd platform herkennen
Wat is nieuw in versie 0.2.3:
- FIX: set smaak in alle gevallen, niet alleen Als een mobiele browser wordt gedetecteerd. Met dank aan John P. Kiffmeyer voor het rapport.
Eisen
- Python
- Django
Reacties niet gevonden