django มือถือเป็น app Django ว่ามีวิธีที่ง่ายในการตรวจสอบเบราว์เซอร์มือถือและให้คุณมีเครื่องมือที่อยู่ในมือของคุณที่จะทำให้แตกต่างกันบางแม่ที่จะส่งมอบรุ่นมือถือของเว็บไซต์ของคุณให้กับผู้ใช้
ความคิดที่จะให้มุมมองของคุณเหมือนกัน แต่เพื่อแลกเปลี่ยนโปร่งใสแม่แบบที่ใช้ในการทำให้การตอบสนอง ซึ่งจะดำเนินการในขั้นตอนที่สอง:
1. ตัวกลางกำหนดความชอบของลูกค้าเพื่อดูเว็บไซต์ของคุณ เช่นที่ ถ้าเขาต้องการที่จะใช้มือถือหรือรสชาติรสเต็มรูปแบบเดสก์ทอป
2. การตักแม่แบบแล้วจะใช้เวลาในการดูแลของการเลือกแม่แบบที่ถูกต้องขึ้นอยู่กับรสชาติที่ตรวจพบในตัวกลาง
การติดตั้ง
ต้องการ-พื้นฐาน: django_mobile ขึ้นอยู่กับกรอบการทำงานของเซสชั่น django ดังนั้นก่อนที่จะพยายามที่จะใช้ django_mobile ให้แน่ใจว่ากรอบการประชุมมีการใช้งานและการทำงาน
1. ติดตั้ง django_mobile ด้วยเครื่องมืองูหลามที่คุณชื่นชอบเช่น กับ django_mobile easy_install หรือ PIP ติดตั้ง django_mobile
2. เพิ่ม django_mobile เพื่อ INSTALLED_APPS ของคุณการตั้งค่าใน settings.py
3. เพิ่ม django_mobile.middleware.MobileDetectionMiddleware เพื่อ MIDDLEWARE_CLASSES ของการตั้งค่า
4. เพิ่ม django_mobile.middleware.SetFlavourMiddleware เพื่อ MIDDLEWARE_CLASSES ของการตั้งค่า ให้แน่ใจว่าจะจดทะเบียนหลังจาก MobileDetectionMiddleware และหลังจาก SessionMiddleware
5. เพิ่ม django_mobile.loader.Loader เป็นรายการแรกที่รายการ TEMPLATE_LOADERS คุณใน settings.py
6. เพิ่ม django_mobile.context_processors.flavour เพื่อ TEMPLATE_CONTEXT_PROCESSORS ของการตั้งค่า
ตอนนี้คุณควรจะสามารถที่จะใช้ django มือถือในพระสิริของตน อ่านด้านล่างของว่าสิ่งที่ทำงานและที่การตั้งค่าสามารถเอ็นดูในการปรับเปลี่ยนพฤติกรรมของ Django-มือถือ
การใช้งาน
แนวคิดของ Django มือถือคือการสร้างรอบความคิดของรสชาติที่แตกต่างกันสำหรับเว็บไซต์ของคุณ ตัวอย่างเช่นรุ่นมือถือมีการอธิบายเป็นหนึ่งรสชาติที่เป็นไปได้, รุ่นท็อปเป็นอีก
ซึ่งทำให้มันเป็นไปได้ที่จะให้การออกแบบที่เป็นไปได้หลายแทนเพียงความแตกต่างระหว่างประสบการณ์สก์ท็อปเต็มรูปแบบและรุ่นมือถือหนึ่ง คุณสามารถทำให้รสชาติมือถือหลายรายการที่มีอยู่เช่น หนึ่งสำหรับซาฟารีบนมือถือ iPhone และ Android เช่นเดียวกับโอเปร่าและหนึ่งพิเศษสำหรับแท็บเล็ตเช่น iPad อินเทอร์เน็ต
หมายเหตุ: โดยค่าเริ่มต้น Django-มือถือเท่านั้นแตกต่างระหว่างรสเต็มรูปแบบและโทรศัพท์มือถือ
หลังจากรสชาติที่ถูกต้องได้รับการแต่งตั้งอย่างใดโดย middlewares ก็มอบหมายให้แอตทริบิวต์ request.flavour คุณสามารถใช้ในมุมมองของคุณเพื่อให้ตรรกะที่แยกต่างหาก
รสนี้แล้วใช้โปร่งใสเลือกแม่แบบกำหนดเองสำหรับรสชาติพิเศษนี้ แม่แบบที่เลือกจะมีรสชาติที่ปัจจุบันนำหน้ากับชื่อเทมเพลทที่คุณต้องการจริงที่จะทำให้ ซึ่งหมายความว่าเมื่อ render_to_response ('index.html', ... ) เรียกว่ามีรสมือถือถูกใช้งานจริงจะกลับมาตอบสนองการแสดงผลที่มีแม่แบบมือถือ / index.html แต่ถ้าแม่แบบนี้รสไม่สามารถใช้ได้ก็จะได้อย่างสง่างาม fallback กับแม่แบบ index.html เริ่มต้น
ในบางกรณีไม่ได้เป็นวิธีที่ต้องการให้มีแม่แบบแยกสำหรับแต่ละรสชาติ นอกจากนี้คุณยังสามารถใช้ {{รส}} ตัวแปรแม่แบบเพื่อเปลี่ยนเฉพาะด้านเล็ก ๆ ของแม่แบบเดียว ตัวอย่างเช่นระยะสั้น:
& nbsp;
& nbsp; ...
นี้จะเพิ่ม (รุ่นมือถือ) เพื่อชื่อของเว็บไซต์ของคุณถ้ามองด้วยรสมือถือที่เปิดใช้งาน
หมายเหตุ: ตัวแปรรสชาติแม่แบบจะใช้ได้เฉพาะเมื่อคุณได้ตั้งค่าตัวประมวลผลบริบท django_mobile.context_processors.flavour และใช้ RequestContext Django เป็นเช่นบริบทที่จะทำให้แม่แบบ
เปลี่ยนรสชาติในปัจจุบัน
กรณีที่ใช้พื้นฐานของ Django มือถือจะเห็นได้ชัดในการให้บริการโทรศัพท์มือถือรุ่นของเว็บไซต์ของคุณกับผู้ใช้ การเลือกรสชาติที่ถูกต้องมักจะทำมาแล้วใน middlewares เมื่อมุมมองของตัวเองที่เรียกว่า ในบางกรณีคุณต้องการที่จะเปลี่ยนรสชาติที่ใช้อยู่ในปัจจุบันในมุมมองของคุณหรือที่อื่น คุณสามารถทำได้โดยเพียงแค่การเรียก django_mobile.set_flavour (รส [ถาวร = True]) อาร์กิวเมนต์แรกเป็นตัวอธิบาย แต่เก็บไว้ในใจว่าคุณจะสามารถผ่านในรสชาติที่คุณยังอยู่ในรสชาติของการตั้งค่า มิฉะนั้น set_flavour จะเพิ่ม ValueError พารามิเตอร์ถาวรตัวเลือกกำหนดหากมีการเปลี่ยนแปลงของรสชาติที่มีการจำสำหรับการร้องขอในอนาคตของลูกค้าเดียวกัน
ผู้ใช้ของคุณสามารถตั้งค่ารสชาติของพวกเขาที่ต้องการให้พวกเขาด้วยตัวเอง พวกเขาเพียงแค่ต้องระบุแถมรสชาติพารามิเตอร์ในการร้องขอไปยังเว็บไซต์ของคุณ นี้อย่างถาวรจะเลือกรสชาตินี้เป็นความชอบของพวกเขาดูเว็บไซต์
คุณสามารถใช้พารามิเตอร์รับนี้ในการช่วยให้ผู้ใช้เลือกจากรสชาติที่มีอยู่ของคุณ:
ข้อสังเกตในการแคช
Django จัดส่งกับบางวิธีการความสะดวกสบายได้อย่างง่ายดายแคชมุมมองของคุณ หนึ่งในนั้นคือ django.views.decorators.cache.cache_page ปัญหากับแคชทั้งหน้าร่วมกับ Django-mobile, ระบบแคช django ที่ไม่ได้ตระหนักถึงรสชาติ ซึ่งหมายความว่าหากร้องขอแรกหน้าจะเสิร์ฟพร้อมกับรสมือถือคำขอที่สองก็อาจจะได้รับหน้าแสดงผลที่มีรสมือถือจากแคช - แม้ว่าคนที่สองได้รับการร้องขอจากเบราว์เซอร์สก์ท็อป
Django-มือถือจะจัดส่งสินค้ากับการดำเนินการของตัวเองของ cache_page การแก้ไขปัญหานี้ กรุณาใช้ django_mobile.cache.cache_page แทนมัณฑนา cache_page เอง Django ของ
นอกจากนี้คุณยังสามารถใช้ middlewares แคช Django ของ django.middleware.cache.UpdateCacheMiddleware และ FetchFromCacheMiddleware เหมือนที่คุณทำอยู่แล้ว แต่การที่จะทำให้พวกเขาตระหนักถึงรสชาติที่คุณจะต้องเพิ่ม django_mobile.cache.middleware.CacheFlavourMiddleware เป็นรายการสุดท้ายที่สองในการตั้งค่า MIDDLEWARE_CLASSES ขวาก่อน FetchFromCacheMiddleware
อ้างอิง
django_mobile.get_flavour ([ขอ] [เริ่มต้น])
& nbsp; รับรสที่ใช้งานอยู่ในขณะนี้ ถ้ารสชาติไม่สามารถระบุได้ว่ามันจะกลับมาเริ่มต้น นี้สามารถเกิดขึ้นได้หาก set_flavour ไม่ได้เรียกว่าก่อนในวงจรตอบสนองการร้องขอในปัจจุบัน ค่าเริ่มต้นค่าเริ่มต้นเป็นรายการแรกในการตั้งค่ารสชาติ
django_mobile.set_flavour (รส [ขอ] [ถาวร])
& nbsp; Set รสชาติที่จะใช้สำหรับการร้องขอ นี้จะเพิ่ม ValueError ถ้ารสชาติไม่ได้อยู่ในการตั้งค่ารสชาติ คุณสามารถพยายามที่จะตั้งรสชาติอย่างถาวรสำหรับการร้องขอโดยผ่านถาวร = True นี้อาจล้มเหลวถ้าคุณจะออกจากวงจรการร้องขอการตอบสนอง เริ่มต้นการร้องขอเพื่อขอใช้งานอยู่ในขณะนี้
django_mobile.context_processors.flavour
& nbsp; ประมวลผลบริบทที่เพิ่มรสชาติปัจจุบันเป็นรสชาติให้บริบท
django_mobile.context_processors.is_mobile
& nbsp; ประมวลผลบริบทนี้จะเพิ่มตัวแปร is_mobile กับบริบทซึ่งเป็นจริงถ้ารสชาติปัจจุบันเท่ากับการตั้งค่า DEFAULT_MOBILE_FLAVOUR
django_mobile.middleware.SetFlavourMiddleware
& nbsp; ดูแลของการโหลดรสชาติที่จัดเก็บจากการใช้งานของผู้ใช้ถ้าตั้ง ยังกำหนดคำขอปัจจุบันตัวแปรด้ายท้องถิ่น นี้เป็นสิ่งจำเป็นเพื่อให้ get_flavour () ฟังก์ชั่นโดยไม่ต้องมีการเข้าถึงวัตถุคำขอ
django_mobile.middleware.MobileDetectionMiddleware
& nbsp; ตรวจพบว่าเบราว์เซอร์มือถือพยายามเข้าถึงเว็บไซต์และกำหนดรสชาติให้ DEFAULT_MOBILE_FLAVOUR ค่าการตั้งค่าในกรณีที่
django_mobile.cache.cache_page
& nbsp; เช่นเดียวกับมัณฑนากร cache_page django แต่ใช้ vary_on_flavour มุมมองก่อนที่จะมีการตกแต่งด้วย django.views.decorators.cache.cache_page
django_mobile.cache.vary_on_flavour
& nbsp; มัณฑนากรที่สร้างขึ้นจากมิดเดิ้ล CacheFlavourMiddleware
django_mobile.cache.middleware.CacheFlavourMiddleware
& nbsp; เพิ่มส่วนหัว X-รสเพื่อ request.META ใน process_request และเพิ่มส่วนหัวนี้เพื่อตอบสนอง ['แตกต่าง'] ใน process_response
การปรับแต่ง
มีบางจุดที่สามารถใช้ได้ที่ช่วยให้คุณสามารถปรับแต่งการทำงานของ Django-มือถือเป็น นี่คือบางส่วนเป็นไปได้ระบุไว้นี้:
MobileDetectionMiddleware
มิดเดิ้ลในตัวเพื่อตรวจสอบว่าผู้ใช้จะใช้เบราว์เซอร์มือถือทำหน้าที่ได้ดีในการผลิต แต่อยู่ไกลจากที่สมบูรณ์แบบและยังนำมาใช้ในวิธีที่ง่ายมาก คุณสามารถลบมิดเดิ้ลนี้จากการตั้งค่าของคุณและเพิ่มรุ่นของคุณเองแทน เพียงให้แน่ใจว่ามันเรียก django_mobile.set_flavour ในบางจุดที่จะตั้งรสชาติที่ถูกต้องสำหรับคุณ
การตั้งค่า
นี่คือรายการของการตั้งค่าที่จะถูกใช้โดย Django มือถือและสามารถเปลี่ยนแปลงได้ใน settings.py ของคุณเอง:
รสชาติ
รายการของรสชาติใช้ได้สำหรับเว็บไซต์ของคุณ
เริ่มต้น: ('เต็ม', 'มือถือ')
DEFAULT_MOBILE_FLAVOUR
รสชาติที่ได้รับการแต่งตั้งถ้าในตัว MobileDetectionMiddleware ตรวจพบเบราว์เซอร์มือถือ
เริ่มต้น: มือถือ
FLAVOURS_TEMPLATE_PREFIX
ข้อความนี้จะถูกนำหน้าชื่อแม่แบบเมื่อค้นหาแม่แบบรส นี้จะเป็นประโยชน์ถ้าคุณมีรสชาติมากและต้องการที่จะเก็บไว้ในไดเรกทอรีย่อยที่พบบ่อย ตัวอย่าง:
จากการนำเข้า django.template.loader render_to_string
จากการนำเข้า django_mobile set_flavour
set_flavour ('มือถือ')
render_to_string ('index.html') # จะทำให้ 'มือถือ / index.html'
# ตอนนี้เพิ่มไปยัง settings.py
FLAVOURS_TEMPLATE_PREFIX = 'รสชาติ /'
# และลองอีกครั้ง
set_flavour ('มือถือ')
render_to_string ('index.html') # จะทำให้ 'รสชาติ / มือถือ / index.html'
เริ่มต้น: '' (สตริงว่าง)
FLAVOURS_TEMPLATE_LOADERS
รถตักแม่แบบ Django มือถือสามารถโหลดแม่แบบนำหน้าด้วยรสชาติปัจจุบัน ระบุกับการตั้งค่านี้ซึ่งรถตักที่ใช้ในการโหลดแม่แบบรส
เริ่มต้น: เช่นเดียวกับการตั้งค่า TEMPLATE_LOADERS แต่ไม่มี 'django_mobile.loader.Loader'
FLAVOURS_GET_PARAMETER
ผู้ใช้สามารถเปลี่ยนรสชาติที่พวกเขาต้องการที่จะมองด้วยพารามิเตอร์ GET HTTP นี้จะกำหนดชื่อของพารามิเตอร์นี้ ตั้งค่าให้ไม่มีการปิดใช้งาน
เริ่มต้น: 'รสชาติ'
FLAVOURS_SESSION_KEY
ความพึงพอใจของผู้ใช้ตั้งค่าด้วยพารามิเตอร์แถมถูกเก็บไว้ในเซสชั่นของผู้ใช้ ตั้งค่านี้กำหนดที่สำคัญเซสชั่นที่ใช้ในการเก็บข้อมูลนี้
เริ่มต้น: 'รสชาติ'
มีอะไรใหม่ ในข่าวประชาสัมพันธ์ฉบับนี้.
- แพลตฟอร์มเพิ่มการรับรู้
มีอะไรใหม่ ในรุ่น 0.2.3:
- การแก้ไข: รสชาติที่ตั้งอยู่ในทุกกรณีไม่เพียง แต่ ถ้าเบราว์เซอร์มือถือมีการตรวจพบ ขอบคุณที่จอห์นพี Kiffmeyer สำหรับรายงาน.
ต้องการ
- หลาม
- Django
ความคิดเห็นที่ไม่พบ