django-mobile là một ứng dụng Django cung cấp một cách đơn giản để phát hiện các trình duyệt di động & nbsp; và cung cấp cho bạn công cụ trong tay của bạn để làm cho một số mẫu khác nhau để cung cấp một phiên bản di động của trang web của bạn cho người dùng.
Ý tưởng là để giữ quan điểm của mình một cách chính xác như nhau, nhưng để minh bạch trao đổi các mẫu được sử dụng để vẽ lại một phản ứng. Điều này được thực hiện theo hai bước:
& Nbsp; 1. Một trung gian xác định sở thích của khách hàng để xem trang web của bạn. Ví dụ: nếu ông muốn sử dụng các hương vị điện thoại di động hoặc máy tính để bàn đầy đủ các hương vị.
& Nbsp; 2. Các mẫu loader mất sau đó chăm sóc của việc lựa chọn các mẫu chính xác dựa trên các hương vị phát hiện trong middleware.
Cài đặt
Pre-Yêu cầu: django_mobile phụ thuộc vào khuôn khổ phiên django của. Vì vậy, trước khi bạn cố gắng sử dụng django_mobile đảm bảo rằng khuôn khổ phiên họp được kích hoạt và làm việc.
& Nbsp; 1. Cài đặt django_mobile với công cụ python yêu thích của bạn, ví dụ: với easy_install django_mobile hoặc pips cài đặt django_mobile.
& Nbsp; 2. Thêm django_mobile để INSTALLED_APPS bạn thiết lập trong settings.py.
& Nbsp; 3. Thêm django_mobile.middleware.MobileDetectionMiddleware để thiết lập MIDDLEWARE_CLASSES của bạn.
& Nbsp; 4. Thêm django_mobile.middleware.SetFlavourMiddleware để thiết lập MIDDLEWARE_CLASSES của bạn. Hãy chắc chắn rằng nó được liệt kê sau MobileDetectionMiddleware và cũng sau khi SessionMiddleware.
& Nbsp; 5. Thêm django_mobile.loader.Loader như mục đầu tiên vào danh sách của bạn trong TEMPLATE_LOADERS settings.py.
& Nbsp; 6. Thêm django_mobile.context_processors.flavour để thiết lập TEMPLATE_CONTEXT_PROCESSORS của bạn.
Bây giờ bạn sẽ có thể sử dụng django-mobile trong vinh quang của nó. Đọc dưới đây Cách thức hoạt động và những thiết lập có thể được tinh chỉnh để thay đổi hành vi django-mobile của.
Cách sử dụng
Các khái niệm về django-mobile được xây dựng theo ý tưởng của các hương vị khác nhau cho trang web của bạn. Ví dụ như các phiên bản di động được mô tả như một hương vị tốt, các phiên bản máy tính để bàn như là một.
Điều này làm cho nó có thể cung cấp nhiều kiểu dáng có thể thay vì chỉ phân biệt giữa một máy tính để bàn đầy đủ kinh nghiệm và một phiên bản di động. Bạn có thể làm cho nhiều hương vị điện thoại di động có sẵn ví dụ: một điện thoại di động cho safari trên iPhone và Android cũng như một cho Opera và là một bổ sung cho các máy tính bảng như iPad internet.
Lưu ý: Theo mặc định django-mobile chỉ phân biệt giữa hương vị đầy đủ và điện thoại di động.
Sau khi các hương vị chính xác bằng cách nào đó được lựa chọn bởi các middlewares, nó được gán cho các thuộc tính request.flavour. Bạn có thể sử dụng điều này trong quan điểm của bạn để cung cấp logic riêng biệt.
Hương vị này sau đó được sử dụng để minh bạch chọn mẫu tùy chỉnh để tạo hương vị đặc biệt này. Các mẫu được chọn sẽ có những hương vị hiện tiền tố để các mẫu tên bạn thực sự muốn làm. Điều này có nghĩa là khi render_to_response ('index.html', ...) được gọi với các hương vị điện thoại di động đang hoạt động sẽ thực sự trở lại một phản ứng trả lại với các điện thoại di động template / index.html. Tuy nhiên, nếu mẫu có hương vị này không có sẵn, nó sẽ duyên dáng dự phòng để các mẫu index.html mặc định.
Trong một số trường hợp không phải là cách mong muốn của mình để có một mẫu hoàn toàn riêng biệt cho mỗi hương. Bạn cũng có thể sử dụng {{}} hương vị mẫu biến để chỉ thay đổi khía cạnh nhỏ của một mẫu duy nhất. Một ví dụ nhỏ:
& Nbsp;
& Nbsp; ...
Điều này sẽ thêm (phiên bản di động) vào tiêu đề của trang web của bạn nếu xem với các hương vị điện thoại di động được kích hoạt.
Lưu ý: Biến hương vị mẫu chỉ có sẵn nếu bạn đã thiết lập bộ vi xử lý và sử dụng bối cảnh django_mobile.context_processors.flavour RequestContext django như dụ ngữ cảnh để làm mẫu.
Thay đổi hương vị hiện tại
Các trường hợp sử dụng cơ bản của django-mobile là rõ ràng là để phục vụ cho một phiên bản di động của trang web của bạn cho người dùng. Việc lựa chọn các hương vị đúng là thường đã được thực hiện trong khi middlewares điểm riêng của bạn được gọi là. Trong một số trường hợp, bạn muốn thay đổi hương vị hiện đang được sử dụng trong view của bạn hoặc ở một nơi khác. Bạn có thể làm điều này bằng cách đơn giản gọi django_mobile.set_flavour (hương vị [, vĩnh viễn = True]). Đối số đầu tiên là tự giải thích. Nhưng hãy nhớ rằng bạn chỉ có thể vượt qua trong một hương vị mà bạn cũng là trong bối cảnh Hương vị của bạn. Nếu không set_flavour sẽ nâng cao một ValueError. Các thông số vĩnh viễn tùy chọn xác định nếu sự thay đổi của các hương vị được nhớ cho các yêu cầu trong tương lai của một khách hàng.
Người dùng có thể thiết lập hương vị của họ mong muốn họ tự. Họ chỉ cần xác định các tham số hương vị GET trên một yêu cầu đến trang web của bạn. Điều này sẽ vĩnh viễn lựa chọn hương vị này là sở thích của họ để xem các trang web.
Bạn có thể sử dụng tham số GET này để cho người dùng lựa chọn hương vị có sẵn của bạn:
- Nhận được đầy đủ kinh nghiệm
& Nbsp; - Xem phiên bản di động của chúng tôi
& Nbsp; - Xem phiên bản iPad của chúng tôi
Reference
django_mobile.get_flavour ([yêu cầu,] [mặc định])
& Nbsp; Nhận các hương vị đang hoạt động. Nếu không có hương vị có thể được xác định nó sẽ trở về mặc định. Điều này có thể xảy ra nếu set_flavour không được gọi trước trong chu trình yêu cầu-phản ứng hiện tại. mặc định để mặc định mục đầu tiên trong bối cảnh Hương.
django_mobile.set_flavour (hương vị, [yêu cầu,] [vĩnh viễn])
& Nbsp; Thiết lập các hương vị được sử dụng cho các yêu cầu. Điều này sẽ làm tăng hương vị ValueError nếu không phải là trong bối cảnh Hương. Bạn có thể cố gắng thiết lập vĩnh viễn cho hương vị yêu cầu bằng cách đi vĩnh viễn = True. Điều này có thể thất bại nếu bạn đang trên một chu trình yêu cầu-phản ứng. yêu cầu mặc định là yêu cầu hiện đang hoạt động.
django_mobile.context_processors.flavour
& Nbsp; trình xử lý Context có thêm các hương vị như hương vị hiện với bối cảnh.
django_mobile.context_processors.is_mobile
& Nbsp; trình xử lý bối cảnh này sẽ thêm một biến is_mobile với bối cảnh mà là True nếu các hương vị hiện tại bằng các thiết lập DEFAULT_MOBILE_FLAVOUR.
django_mobile.middlewares.SetFlavourMiddleware
& Nbsp; Mất sóc tải các hương vị được lưu trữ trong phiên làm việc của người sử dụng nếu thiết lập. Cũng đặt ra yêu cầu đến một biến thread-địa phương. Điều này là cần thiết để cung cấp get_flavour () chức năng mà không cần phải truy cập vào các đối tượng yêu cầu.
django_mobile.middlewares.MobileDetectionMiddleware
& Nbsp; Phát hiện nếu một trình duyệt di động cố gắng truy cập vào các trang web và thiết lập các hương vị để thiết lập giá trị DEFAULT_MOBILE_FLAVOUR trong trường hợp.
Tùy
Có một số điểm có sẵn cho phép bạn tùy chỉnh các hành vi của django-mobile. Dưới đây là một số khả năng được liệt kê:
MobileDetectionMiddleware
Việc xây dựng trong trung gian để phát hiện nếu người dùng đang sử dụng một trình duyệt di động phục vụ tốt trong sản xuất nhưng là xa hoàn hảo và cũng thực hiện một cách rất đơn giản. Bạn có thể loại bỏ một cách an toàn middleware này từ các thiết lập của bạn và thêm vào phiên bản của riêng bạn thay thế. Chỉ cần chắc chắn rằng nó gọi django_mobile.set_flavour tại một số điểm để thiết lập các hương vị chính xác cho bạn.
Cài đặt
Dưới đây là một danh sách các thiết lập được sử dụng bởi django-mobile và có thể được thay đổi trong settings.py của riêng bạn:
Hương vị
Một danh sách các hương vị có sẵn cho trang web của bạn.
Default: ('đầy đủ', 'di động')
DEFAULT_MOBILE_FLAVOUR
Các hương vị được chọn nếu được xây dựng trong MobileDetectionMiddleware phát hiện một trình duyệt di động.
Mặc định: điện thoại di động
FLAVOURS_TEMPLATE_PREFIX
Chuỗi này sẽ được bắt đầu với các template khi tìm kiếm các mẫu có mùi vị. Điều này rất hữu ích nếu bạn có nhiều hương vị và muốn lưu trữ chúng trong một thư mục con chung. Ví dụ:
từ django.template.loader render_to_string nhập khẩu
từ django_mobile set_flavour nhập khẩu
set_flavour ("di động")
render_to_string ('index.html') # sẽ làm "di động / index.html '
# Bây giờ thêm video này vào settings.py
FLAVOURS_TEMPLATE_PREFIX = 'hương vị /'
# Và thử lại
set_flavour ("di động")
render_to_string ('index.html') # sẽ làm 'hương vị / mobile / index.html'
Mặc định: '' (chuỗi rỗng)
FLAVOURS_TEMPLATE_LOADERS
mẫu loader django-mobile có thể tải mẫu tiền tố với hương vị hiện tại. Chỉ định với thiết lập này mà máy xúc được sử dụng để tải các mẫu có mùi vị.
Mặc định: giống như TEMPLATE_LOADERS thiết nhưng không có 'django_mobile.loader.Loader'.
FLAVOURS_GET_PARAMETER
Người dùng có thể thay đổi hương vị mà họ muốn nhìn vào với một tham số HTTP GET. Điều này xác định tên của tham số này. Đặt nó vào None để vô hiệu hóa.
Mặc định: 'hương vị'
FLAVOURS_SESSION_KEY
Sở thích của người sử dụng thiết lập với các tham số GET được lưu trữ trong phiên làm việc của người dùng. Thiết lập này xác định phiên phím được sử dụng để giữ thông tin này.
Mặc định: 'hương vị'là gì mới trong phiên bản này:
- FIX: thiết lập hương vị trong mọi trường hợp, không chỉ khi một trình duyệt di động được phát hiện. Nhờ John P. Kiffmeyer cho báo cáo.
là gì mới trong phiên bản 0.2.2:
- FIX: Opera Mobile trên Android đã được phân loại như điện thoại di động trình duyệt. Nhờ dgerzo cho báo cáo.
- Sniffing cho iPad để nó không có được công nhận như là thiết bị di động nhỏ. Nhờ Ryan Showalter cho các bản vá.
là gì mới trong phiên bản 0.2.1:
- vấn đề đóng gói cố định mà không bao gồm các django_mobile gói .cache. Nhờ Scott Turnbull cho báo cáo.
là gì mới trong phiên bản 0.2.0:
- bố trí dự án cơ cấu lại để loại bỏ settings.py và quản lý py từ thư mục cấp cao nhất. Điều này giải quyết các cuộc xung đột module-tên khi lắp đặt với tùy chọn -e pip của. Nhờ bendavis78 cho báo cáo.
- Thêm một trang trí cache_page mà giả cache_page django nhưng có hương vị vào tài khoản. Hệ thống bộ nhớ đệm nếu không sẽ cache các hương vị đó đang hoạt động khi không có Cache. Nhờ itmustbejj cho báo cáo.
- Thêm một CacheFlavourMiddleware mà làm middlewares caching django của nhận thức hương vị. Chúng tôi sử dụng các interally Vary phản ứng tiêu đề và các yêu cầu của tiêu đề X-Flavour.
là gì mới trong phiên bản 0.1.4:
- Cố định vấn đề trong mẫu loader mà chỉ thực hiện nhưng load_template_source không load_template. Nhờ tylanpince, rwilcox và Frederic Roland cho báo cáo.
là gì mới trong phiên bản 0.1.3:
- Cố định vấn đề với lệnh runserver điều đó đã không được xử lý tất cả các yêu cầu independed từ mỗi khác. Nhờ bclermont và Frederic Roland cho báo cáo.
là gì mới trong phiên bản 0.1.2:.
- Sửa lỗi biến unreferenced trong SetFlavourMiddleware
là gì mới trong phiên bản 0.1.1:
- Cố định thuộc tính cho is_usable django_mobile.loader.Loader. Cảm ơn Michela Ledwidge cho báo cáo.
Yêu cầu :
- Python
- Django
& Nbsp;
Bình luận không