Date Modified Tags python / memo

pythonのライブラリは様々な種類があるので、メモしておかないと、何がどう使えるのかさっぱり分からない(英語ページを見る羽目になる)のでメモしておく。

文字列の類似度を比較するーdifflib

文字列の類似度や差分を計算する時にはpythonの標準ライブラリの「difflib」が使える

類似度を計算するのはこんな感じ

# -*- coding: utf-8 -*-
import difflib

str_from = "ほげ"
str_to = "ふが"
match = difflib.SequenceMatcher(None, str_from, str_to).ratio()

こんな感じ

参考:Python で文字列の類似度を比較する - 無駄と文化

Djangoでcssやjavascriptを圧縮してインライン表示できるdjango_compressor

インストール

$ pip install django_compressor

設定ファイル

settings.pyを編集

INSTALLED_APPS = (
...
'compressor',
...
)
STATICFILES_FINDERS = (
...
'compressor.finders.CompressorFinder,
...
)
COMPRESS_ENABLED=True #DEBUG=Trueの状態で機能させたい時はこれを設定

テンプレート

\{% load compress %\}
\{% compress css inline %\}
<link rel="stylesheet" href="path/to/css">
\{% endcompress %\}
\{% compress js inline %\}
<script src="path/to/js">
\{% endcompress %\}

モバイル検出ーdjango-mobile

djangoでモバイル検出してテンプレート振り分けたり、条件分けしたい時 に使うライブラリ

インストール

pip install django_mobile

設定

settings.pyを編集

INSTALLED_APPS = (
...
'django_mobile',
...
)
MIDDLEWARE_CLASSES = (
...
'django_mobile.middleware.MobileDetectionMiddleware',
'django_mobile.middleware.SetFlavourMiddleware',
...
)
TEMPLATES = [{
...
'OPTIONS':{
...
'django_mobile.context_processors.flavour',
...
}
...
}]

loaderの設定しなかったけど、条件分岐に使っただけなので出来た。テンプレート振り分けはやってない。

テンプレート内でのモバイル判定

You {% if flavour == "mobile" %}use mobile{% else %}don't use mobile{% endif %}.

参考:GitHub - gregmuellegger/django-mobile: Detect mobile browsers and serve different template flavours to them.