2012-04-07 2 views
1

Я пишу простое приложение Django и хочу добавить ajax paging с помощью Dajax/Dajaxice. Я начал с попытки реализовать простой пример подкачки с сайта Dajax (http://dajaxproject.com/pagination/), но не смог заставить его работать. Всякий раз, когда я нажимаю на кнопку «Далее» я получаю следующее сообщение об ошибке: JSКак мне назвать функции Dajax/Dajaxice из моего шаблона Django

Uncaught TypeError: Cannot call method 'pagination' of undefined 

проект My Django называется «DoSomething» - и она содержит одно приложение под названием «ядро».

Я следовал всем инструкциям, чтобы установить Dajaxice здесь: https://github.com/jorgebastida/django-dajaxice/wiki/installation

У меня есть файл питона в каталоге «ядро» под названием «ajax.py», который содержит следующий код:

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). Я не могу ничего найти, чтобы объяснить это, и я пробовал каждую комбинацию имени/имени проекта, о котором я могу думать!

СПАСИБО! :)

+0

Пожалуйста, помогите:! '( – tominwood

ответ

2

По крайней мере, в моем случае я должен добавить название проекта, а также app_label.

Dajaxice.MyProject.core.my_dajax_method(Dajax.process, {'form' : data}); 
+0

Попробую, что и посмотреть, если он работает спасибо – tominwood

+0

Yay !!! (Это сработало) :) – tominwood

+0

ВНИМАНИЕ: http://stackoverflow.com/questions/26219391/dajax-не-работает/29230482 # 29230482 – Trix

Смежные вопросы