Django-mobile adalah aplikasi Django yang menyediakan cara sederhana untuk mendeteksi browser mobile dan memberikan alat-alat di tangan Anda untuk membuat beberapa template yang berbeda untuk memberikan versi mobile dari situs Anda kepada pengguna.
Idenya adalah untuk menjaga pandangan Anda persis sama, tetapi untuk transparan pertukaran template yang digunakan untuk membuat tanggapan. Hal ini dilakukan dalam dua langkah:
1. middleware A menentukan preferensi klien untuk melihat situs Anda. Misalnya jika ia ingin menggunakan rasa ponsel atau rasa desktop yang lengkap.
2. Template loader membutuhkan maka mengurus memilih template yang benar berdasarkan rasa terdeteksi dalam middleware.
Instalasi
Pra-Persyaratan: django_mobile tergantung pada kerangka sesi Django itu. Jadi sebelum Anda mencoba untuk menggunakan django_mobile memastikan bahwa kerangka sesi diaktifkan dan bekerja.
1. Instal django_mobile dengan alat python favorit Anda, misalnya dengan django_mobile easy_install atau pip menginstal django_mobile.
2. Tambahkan django_mobile ke INSTALLED_APPS Anda pengaturan di settings.py tersebut.
3. Tambahkan django_mobile.middleware.MobileDetectionMiddleware ke MIDDLEWARE_CLASSES pengaturan Anda.
4. Tambahkan django_mobile.middleware.SetFlavourMiddleware ke MIDDLEWARE_CLASSES pengaturan Anda. Pastikan itu tercantum setelah MobileDetectionMiddleware dan juga setelah SessionMiddleware.
5. Tambahkan django_mobile.loader.Loader sebagai item pertama ke daftar TEMPLATE_LOADERS Anda di settings.py.
6. Tambahkan django_mobile.context_processors.flavour ke TEMPLATE_CONTEXT_PROCESSORS pengaturan Anda.
Sekarang Anda harus dapat menggunakan Django-mobile dalam kemuliaan. Baca di bawah tentang bagaimana segala sesuatu bekerja dan yang pengaturan dapat tweak untuk memodifikasi perilaku Django-mobile.
Penggunaan
Konsep Django-mobile membangun sekitar ide-ide dari rasa yang berbeda untuk situs Anda. Misalnya versi mobile digambarkan sebagai salah satu mungkin rasa, versi desktop lain.
Hal ini memungkinkan untuk menyediakan banyak desain yang mungkin bukan hanya membedakan antara pengalaman desktop penuh dan satu versi mobile. Anda dapat membuat beberapa rasa ponsel yang tersedia misalnya satu untuk safari mobile di iPhone dan Android serta satu untuk Opera dan tambahan satu untuk tablet internet seperti iPad.
Catatan: Secara default Django-mobile hanya membedakan antara rasa penuh dan mobile.
Setelah rasa yang benar entah bagaimana dipilih oleh middlewares, itu ditugaskan untuk atribut request.flavour. Anda dapat menggunakan ini dalam pandangan Anda untuk memberikan logika yang terpisah.
Rasa ini kemudian digunakan untuk transparan memilih template kustom untuk rasa khusus ini. Template yang dipilih akan memiliki rasa saat ini diawali dengan nama template Anda benar-benar ingin membuat. Ini berarti ketika render_to_response ('index.html', ...) disebut dengan rasa ponsel yang aktif akan benar-benar kembali respon yang diberikan dengan ponsel Template / index.html. Namun, jika Template rasa ini tidak tersedia dengan lapang dada akan mundur ke template index.html default.
Dalam beberapa kasus yang tidak dengan cara yang diinginkan untuk memiliki template benar-benar terpisah untuk setiap rasa. Anda juga dapat menggunakan {{}} rasa variabel template hanya mengubah aspek kecil dari pola tunggal. Contoh singkat:
& Nbsp;
& Nbsp; ...
Hal ini akan menambah (versi mobile) dengan judul situs Anda jika dilihat dengan rasa ponsel diaktifkan.
Catatan: Variabel template rasa ini hanya tersedia jika Anda telah menyiapkan prosesor konteks django_mobile.context_processors.flavour dan digunakan Django yang RequestContext sebagai konteks misalnya untuk membuat template.
Mengubah rasa saat ini
Penggunaan Kasus dasar Django-mobile jelas untuk melayani versi mobile dari situs Anda kepada pengguna. Pemilihan rasa yang benar biasanya sudah dilakukan di middlewares ketika pandangan Anda sendiri disebut. Dalam beberapa kasus, Anda ingin mengubah rasa saat ini digunakan dalam pandangan Anda atau di tempat lain. Anda dapat melakukan ini dengan hanya menelepon django_mobile.set_flavour (rasa [, tetap = True]). Argumen pertama adalah diri menjelaskan. Namun perlu diingat bahwa Anda hanya dapat lulus dalam rasa yang juga dalam Flavours pengaturan Anda. Jika tidak set_flavour akan menaikkan ValueError. Parameter permanen opsional mendefinisikan jika perubahan rasa ini mengingat permintaan masa depan klien yang sama.
Pengguna Anda dapat mengatur rasa yang diinginkan mereka sendiri. Mereka hanya perlu menentukan parameter rasa GET pada permintaan ke situs Anda. Ini secara permanen akan memilih rasa ini sebagai preferensi mereka untuk melihat situs.
Anda dapat menggunakan parameter GET ini untuk membiarkan pengguna memilih dari rasa tersedia Anda:
- Dapatkan pengalaman penuh
& Nbsp; - Lihat versi mobile kami
& Nbsp; - Lihat versi iPad kami
& Nbsp;
Catatan tentang caching
Django adalah pengiriman dengan beberapa metode kenyamanan untuk dengan mudah men-cache pandangan Anda. Salah satunya adalah django.views.decorators.cache.cache_page. Masalah dengan caching seluruh halaman dalam hubungannya dengan Django-mobile, sistem caching bahwa Django adalah tidak menyadari rasa. Ini berarti bahwa jika permintaan pertama ke halaman disajikan dengan rasa mobile, permintaan kedua mungkin juga mendapatkan halaman yang diberikan dengan rasa mobile dari cache - bahkan jika kedua diminta oleh browser desktop.
Django-mobile pengiriman dengan pelaksanaan itu sendiri cache_page untuk mengatasi masalah ini. Silakan gunakan django_mobile.cache.cache_page bukan Django itu cache_page dekorator sendiri.
Anda juga dapat menggunakan Django yang middlewares caching django.middleware.cache.UpdateCacheMiddleware dan FetchFromCacheMiddleware seperti yang Anda lakukan. Tetapi untuk membuat mereka menyadari rasa, Anda perlu menambahkan django_mobile.cache.middleware.CacheFlavourMiddleware sebagai kedua item terakhir dalam pengaturan MIDDLEWARE_CLASSES, tepat sebelum FetchFromCacheMiddleware.
Referensi
django_mobile.get_flavour ([permintaan,] [standar])
& Nbsp; Dapatkan rasa yang sedang aktif. Jika tidak ada rasa dapat ditentukan itu akan kembali default. Hal ini dapat terjadi jika set_flavour tidak dipanggil sebelumnya dalam siklus permintaan-respon saat ini. default default item pertama dalam Flavours pengaturan.
django_mobile.set_flavour (rasa, [permintaan,] [permanen])
& Nbsp; Mengatur rasa yang akan digunakan untuk permintaan. Hal ini akan meningkatkan ValueError jika rasa tidak dalam Flavours pengaturan. Anda dapat mencoba untuk mengatur rasa secara permanen untuk permintaan dengan melewati = permanen Benar. Hal ini mungkin gagal jika Anda berada di luar siklus request-response. meminta default untuk permintaan yang sedang aktif.
django_mobile.context_processors.flavour
& Nbsp; prosesor Konteks yang menambahkan rasa saat ini sebagai rasa dengan konteks.
django_mobile.context_processors.is_mobile
& Nbsp; prosesor konteks ini akan menambahkan variabel is_mobile dengan konteks yang Benar jika rasa saat ini sama dengan pengaturan DEFAULT_MOBILE_FLAVOUR.
django_mobile.middleware.SetFlavourMiddleware
& Nbsp; Menjaga memuat rasa yang tersimpan dari sesi pengguna jika diatur. Juga menetapkan permintaan saat ini untuk variabel thread-lokal. Hal ini diperlukan untuk memberikan get_flavour () fungsi tanpa akses ke objek permintaan.
django_mobile.middleware.MobileDetectionMiddleware
& Nbsp; Mendeteksi apakah mobile browser mencoba untuk mengakses situs tersebut dan menetapkan rasa untuk DEFAULT_MOBILE_FLAVOUR nilai pengaturan dalam kasus.
django_mobile.cache.cache_page
& Nbsp; Sama seperti Django yang cache_page dekorator tetapi berlaku vary_on_flavour sebelum pandangan yang dihiasi dengan django.views.decorators.cache.cache_page.
django_mobile.cache.vary_on_flavour
& Nbsp; Sebuah dekorator dibuat dari middleware CacheFlavourMiddleware.
django_mobile.cache.middleware.CacheFlavourMiddleware
& Nbsp; Menambahkan X-Flavour header request.META di process_request dan menambahkan header ini respon ['Vary'] di process_response.
Customization
Ada beberapa poin yang tersedia yang memungkinkan Anda menyesuaikan perilaku Django-mobile. Berikut adalah beberapa kemungkinan yang terdaftar:
MobileDetectionMiddleware
Built-in middleware untuk mendeteksi jika pengguna menggunakan mobile browser dilayani dengan baik dalam produksi, tetapi masih jauh dari sempurna dan juga diimplementasikan dalam cara yang sangat sederhana. Anda dapat dengan aman menghapus middleware ini dari pengaturan Anda dan menambahkan versi Anda sendiri. Pastikan bahwa panggilan django_mobile.set_flavour di beberapa titik untuk mengatur rasa tepat untuk Anda.
Pengaturan
Berikut adalah daftar pengaturan yang digunakan oleh Django-mobile dan dapat diubah dalam settings.py Anda sendiri:
RASA
Daftar rasa tersedia untuk situs Anda.
Default: ('penuh', 'mobile')
DEFAULT_MOBILE_FLAVOUR
Rasa yang dipilih jika built-in MobileDetectionMiddleware mendeteksi browser mobile.
Default: ponsel
FLAVOURS_TEMPLATE_PREFIX
String ini akan diawali dengan nama template yang ketika mencari template rasa. Ini berguna jika Anda memiliki banyak rasa dan ingin menyimpannya dalam sebuah subdirektori umum. Contoh:
dari django.template.loader impor render_to_string
dari django_mobile impor set_flavour
set_flavour ('mobile')
render_to_string ('index.html') # akan membuat 'mobile / index.html'
# Sekarang menambahkan ini ke settings.py
FLAVOURS_TEMPLATE_PREFIX = 'rasa /'
# Dan coba lagi
set_flavour ('mobile')
render_to_string ('index.html') # akan membuat 'rasa / mobile / index.html'
Default: '' (string kosong)
FLAVOURS_TEMPLATE_LOADERS
Django-mobile Template loader dapat memuat template diawali dengan rasa saat ini. Tentukan dengan pengaturan ini yang loader yang digunakan untuk memuat template rasa.
Default: sama seperti TEMPLATE_LOADERS pengaturan tapi tanpa 'django_mobile.loader.Loader'.
FLAVOURS_GET_PARAMETER
Pengguna dapat mengubah rasa mereka ingin melihat dengan parameter HTTP GET. Ini menentukan nama parameter ini. Set ke None untuk menonaktifkan.
Default: 'rasa'
FLAVOURS_SESSION_KEY
Preferensi pengguna mengatur dengan parameter GET disimpan dalam sesi pengguna. Pengaturan ini menentukan sesi yang kunci digunakan untuk menyimpan informasi ini.
Default: 'rasa'
Apa yang baru dalam rilis ini:.
- Ditambahkan platform yang mengakui
Apa yang baru dalam versi 0.2.3:
- FIX: mengatur rasa dalam semua kasus, tidak hanya jika browser ponsel terdeteksi. Terima kasih kepada John P. Kiffmeyer untuk laporan.
Persyaratan :
- Python
- Django
Komentar tidak ditemukan