django-endless-pagination в твиттер-стиле
Я пытаюсь реализовать django-бесконечную нумерацию страниц в моем проекте. Простая нумерация страниц (с "показать больше"), но стиль твиттера (на основе ajax) доставляет мне неприятности.
Это мой взгляд:
@page_template('userena/profil_page.html') # just add this decorator
def public_details(request, username=None,
template = 'userena/profil.html', extra_context=None):
user = get_object_or_404(get_user_model(), username__iexact=username)
userObjekat = User.objects.get(username=username)
user_profil = userObjekat.get_profile()
context = {
'projekti': user_profil.projekat_set.all(),
}
if extra_context is not None:
context.update(extra_context)
return userena_views.profile_detail(request, extra_context=context, username=username, template_name='userena/profil.html')
Как и предполагалось, мои шаблоны разбиты на 2 части: "основной" и AJAX. Это часть основного шаблона, который загружает шаблон _page:
</li>
{% include page_template %}
</li>
и _page template ПОЛУЧАЕТ ВКЛЮЧЕНИЕ - Я могу видеть содержимое.
_страница:
{% load endless %}
<li id="projektiTab">
<div class="ten columns">
<ul class="accordion">
{% paginate projekti %}
{% for projekat in projekti %}
<li>
<div class="title">
<h6> {{ projekat.naziv }}</h6>
</div>
<div class="content">
<p>{{ projekat.opis }}</p>
</div>
</li>
{% endfor %}
{% show_more %}
<li>
</div>
</li>
Javascripts также загружается ( STATIC_URL работает) и в источнике страницы, который я использую:
<script src="/static/js/endless-pagination.js"></script>
<script>
$.endlessPaginate({
paginateOnScroll: true,
paginateOnScrollChunkSize: 5
});
</script>
После всего этого нумерация по свиткам не работает. Что я делаю неправильно?
1 ответ
Конечно, я допустил пару "маленьких" ошибок, которые казались незначительными, но это не так.
Основной шаблон или родительский шаблон, который содержит page_template, должен содержать что-то вроде этого:
<div class="endless_page_template">
{% include page_template %}
{% block js %}
{{ block.super }}
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="{{ STATIC_URL }}js/endless-pagination.js"></script>
<script>$.endlessPaginate();</script>
{% endblock %}
</div>
Таким образом, это должно быть в div с тем конкретным классом, который я упустил вчера.
page_template выглядит примерно так:
{% load endless %}
{% paginate projekti %}
{% for projekat in projekti %}
{{ projekat.name }}
{% endfor %}
{% show_pages %}
Это, конечно, может быть предварительно подтверждено с помощью некоторого HTML (в моем случае аккордеонного элемента Zurb Foundation). И последнее, но не менее важное - мнение:
@page_template('userena/profil_strana.html') # name of the page_template
def public_details(request, username=None,
template = 'userena/profil.html', extra_context=None):
userObjekat = User.objects.get(username=username) # getting user object
user_profil = userObjekat.get_profile() # getting user's profile
context = {
'projekti': user_profil.projekat_set.all(), # and a list of objects to iterate thru
}
if extra_context is not None:
context.update(extra_context)
return userena_views.profile_detail(request, extra_context=context, username=username, template_name=template)
И это работает.