簡単なDjangoアプリケーションを作成していて、Dajax/Dajaxiceを使用してajaxページングを追加したいと思います。Dajax Webサイト(http://dajaxproject.com/pagination/)から簡単なページングの例を実装することから始めましたが、うまく機能させることができませんでした。「次へ」ボタンを押すたびに、次のjsエラーが発生します。
Uncaught TypeError: Cannot call method 'pagination' of undefined
私のDjangoプロジェクトは「DoSomething」と呼ばれ、「core」と呼ばれる単一のアプリが含まれています。
ここでDajaxiceをインストールするためのすべての指示に従いました:https ://github.com/jorgebastida/django-dajaxice/wiki/installation
「コア」ディレクトリに「ajax.py」というPythonファイルがあり、次のコードが含まれています。
from views import get_pagination_page
from dajax.core.Dajax import Dajax
from django.template.loader import render_to_string
from dajaxice.decorators import dajaxice_register
from django.utils import simplejson
@dajaxice_register
def pagination(request, p):
try:
page = int(p)
except:
page = 1
items = get_pagination_page(page)
render = render_to_string('posts_paginator.html', { 'items': items })
dajax = Dajax()
dajax.assign('#pagination','innerHTML',render)
return dajax.json()
私のviews.pyファイルには次のメソッドが含まれています。
def index(request):
posts = Post.objects.order_by('id').reverse()
items = get_pagination_page(1)
return render_to_response('index.html', locals(), context_instance=RequestContext(request))
def get_pagination_page(page=1):
from django.core.paginator import Paginator, InvalidPage, EmptyPage
from django.template.loader import render_to_string
items = Post.objects.order_by('id').reverse()
paginator = Paginator(items, 10)
try:
page = int(page)
except ValueError:
page = 1
try:
items = paginator.page(page)
except (EmptyPage, InvalidPage):
items = paginator.page(paginator.num_pages)
return items
私のインデックステンプレートには次のものが含まれています。
<div id="pagination">
{% include "posts_paginator.html" %}
</div>
私のposts_paginator.htmlテンプレートには、ページネーションメソッドをトリガーするための次のリンクが含まれています。
{% for i in items.object_list %}
{{ i }}<br>
{% endfor %}
{% if items.has_next %}
<a href="#" onclick="Dajaxice.core.pagination(Dajax.process,{'p':{{ items.next_page_number }}})">next</a>
{% endif %}
私の質問は、onClick値内で、(ajax.pyファイルから)ページネーションメソッドをどのように参照する必要があるかということです。これを説明するものは何も見つかりません-そして私は考えられるプロジェクト名/アプリ名のすべての組み合わせを試しました!
ありがとう!:)