django-mobilityを試す
アクセスした端末のUserAgentによってレスポンスを変えたい場合に使えるライブラリ
インストール
pip install django-mobility
設定
ドキュメントに書いてあるままsettings.pyに設定を書く
ただの値はデフォルト値なので、このまま使う場合は書かなくてもいい
# A regex for detecting mobile user agents. MOBILE_USER_AGENTS = 'android|fennec|iemobile|iphone|opera (?:mini|mobi)' # The name of the cookie to set if the user prefers the mobile site. MOBILE_COOKIE = 'mobile'
Middlewareを追加する必要がある
MIDDLEWARE_CLASSES += ( 'mobility.middleware.DetectMobileMiddleware', 'mobility.middleware.XMobileMiddleware', )
デコレータを使う
Middlewareによってモバイル端末からアクセスされたと判断された場合はmobile/index.htmlが表示される
mobileというディレクトリ名は今のところ変更できない
from django.template.response import TemplateResponse from mobility.decorators import mobile_template @mobile_template('sampleapp/{mobile/}index.html') def index(request, template=None): return TemplateResponse( request=request, template=template )
関数を分けて書きたい場合はmobilizedデコレータを使う
from django.template.response import TemplateResponse from mobility.decorators import mobilized def viewpc(request): return TemplateResponse( request=request, template='sampleapp/index.html' ) @mobilized(viewpc) def viewmobile(request): return TemplateResponse( request=request, template='sampleapp/mobile/index.html' )
urls.pyにはviewmobileのほうを設定しておけば、PCでアクセスした場合はviewpcが処理される