Djangoのページネートミドルウェア「django-pagination」を設定する方法
django-paginationを使って、テンプレートで簡単にページ分割を使いましょう。
まずはダウンロードします。
ダウンロードしたら、インストールします。
# python setup.py install running install running bdist_egg running egg_info writing requirements to django_pagination.egg-info/requires.txt writing django_pagination.egg-info/PKG-INFO writing top-level names to django_pagination.egg-info/top_level.txt writing dependency_links to django_pagination.egg-info/dependency_links.txt reading manifest file 'django_pagination.egg-info/SOURCES.txt' writing manifest file 'django_pagination.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_py creating build/bdist.linux-x86_64/egg creating build/bdist.linux-x86_64/egg/pagination copying build/lib/pagination/tests.py -> build/bdist.linux-x86_64/egg/pagination copying build/lib/pagination/middleware.py -> build/bdist.linux-x86_64/egg/pagination creating build/bdist.linux-x86_64/egg/pagination/templates creating build/bdist.linux-x86_64/egg/pagination/templates/pagination copying build/lib/pagination/templates/pagination/pagination.html -> build/bdist.linux-x86_64/egg/pagination/templates/pagination copying build/lib/pagination/models.py -> build/bdist.linux-x86_64/egg/pagination copying build/lib/pagination/__init__.py -> build/bdist.linux-x86_64/egg/pagination creating build/bdist.linux-x86_64/egg/pagination/locale creating build/bdist.linux-x86_64/egg/pagination/locale/fr creating build/bdist.linux-x86_64/egg/pagination/locale/fr/LC_MESSAGES copying build/lib/pagination/locale/fr/LC_MESSAGES/django.mo -> build/bdist.linux-x86_64/egg/pagination/locale/fr/LC_MESSAGES copying build/lib/pagination/locale/fr/LC_MESSAGES/django.po -> build/bdist.linux-x86_64/egg/pagination/locale/fr/LC_MESSAGES creating build/bdist.linux-x86_64/egg/pagination/locale/pl creating build/bdist.linux-x86_64/egg/pagination/locale/pl/LC_MESSAGES copying build/lib/pagination/locale/pl/LC_MESSAGES/django.mo -> build/bdist.linux-x86_64/egg/pagination/locale/pl/LC_MESSAGES copying build/lib/pagination/locale/pl/LC_MESSAGES/django.po -> build/bdist.linux-x86_64/egg/pagination/locale/pl/LC_MESSAGES creating build/bdist.linux-x86_64/egg/pagination/locale/de creating build/bdist.linux-x86_64/egg/pagination/locale/de/LC_MESSAGES copying build/lib/pagination/locale/de/LC_MESSAGES/django.mo -> build/bdist.linux-x86_64/egg/pagination/locale/de/LC_MESSAGES copying build/lib/pagination/locale/de/LC_MESSAGES/django.po -> build/bdist.linux-x86_64/egg/pagination/locale/de/LC_MESSAGES creating build/bdist.linux-x86_64/egg/pagination/templatetags copying build/lib/pagination/templatetags/pagination_tags.py -> build/bdist.linux-x86_64/egg/pagination/templatetags copying build/lib/pagination/templatetags/__init__.py -> build/bdist.linux-x86_64/egg/pagination/templatetags byte-compiling build/bdist.linux-x86_64/egg/pagination/tests.py to tests.pyc byte-compiling build/bdist.linux-x86_64/egg/pagination/middleware.py to middleware.pyc byte-compiling build/bdist.linux-x86_64/egg/pagination/models.py to models.pyc byte-compiling build/bdist.linux-x86_64/egg/pagination/__init__.py to __init__.pyc byte-compiling build/bdist.linux-x86_64/egg/pagination/templatetags/pagination_tags.py to pagination_tags.pyc byte-compiling build/bdist.linux-x86_64/egg/pagination/templatetags/__init__.py to __init__.pyc creating build/bdist.linux-x86_64/egg/EGG-INFO copying django_pagination.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO copying django_pagination.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying django_pagination.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying django_pagination.egg-info/not-zip-safe -> build/bdist.linux-x86_64/egg/EGG-INFO copying django_pagination.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying django_pagination.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO creating 'dist/django_pagination-1.0.5-py2.6.egg' and adding 'build/bdist.linux-x86_64/egg' to it removing 'build/bdist.linux-x86_64/egg' (and everything under it) Processing django_pagination-1.0.5-py2.6.egg removing '/usr/local/lib/python2.6/site-packages/django_pagination-1.0.5-py2.6.egg' (and everything under it) creating /usr/local/lib/python2.6/site-packages/django_pagination-1.0.5-py2.6.egg Extracting django_pagination-1.0.5-py2.6.egg to /usr/local/lib/python2.6/site-packages django-pagination 1.0.5 is already the active version in easy-install.pth Installed /usr/local/lib/python2.6/site-packages/django_pagination-1.0.5-py2.6.egg Processing dependencies for django-pagination==1.0.5 Searching for setuptools==0.6c11 Best match: setuptools 0.6c11 Processing setuptools-0.6c11-py2.6.egg setuptools 0.6c11 is already the active version in easy-install.pth Installing easy_install script to /usr/local/bin Installing easy_install-2.6 script to /usr/local/bin Using /usr/local/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg Finished processing dependencies for django-pagination==1.0.5
インストール完了です。
settings.pyを変更します。
次は設定変更です。
#vi urls.py INSTALLED_APPS = ( 'pagination', ) MIDDLEWARE_CLASSES = ( 'pagination.middleware.PaginationMiddleware', ) TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.i18n', 'django.core.context_processors.request', ) PAGINATION_DEFAULT_PAGINATION = 2
テンプレートを編集します。
#vi ./templates/hoge.html {% load pagination_tags %} {% autopaginate list 20 %} {% for item in list %} {% endfor %} {% paginate %}
これで利用できるようになります。
例外:テンプレートエラー
TemplateSyntaxError at /hoge/ Caught KeyError while rendering: 'request'
のようなエラーが出る場合は、settings.pyの
TEMPLATE_CONTEXT_PROCESSORSを確認してください。
おまけ
TEMPLATE_CONTEXT_PROCESSORSが上書きされて、エラーが出る場合は、
次のように設定しなおしてみてください。
from django.conf import global_settings TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + ( 'django.core.context_processors.i18n', 'django.core.context_processors.request', )
これでページ送りが使えるようになります。便利です。