def about_user(request,user_slug):
curent_user = get_object_or_404(User, username = user_slug)
user_posts = curent_user.blog_posts.all()
categories = Category.objects.annotate(cnt=Count('get_news')).filter(cnt__gt=0)
paginator = Paginator(user_posts, 3)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
try:
about_user = AboutUser.objects.get(author = curent_user.id)
context = {
'username':curent_user,
'categories':categories,
'user_posts':user_posts,
'side':1,
'about_user':about_user,
'page_obj': page_obj,
}
except:
context = {
'username':curent_user,
'categories':categories,
'user_posts':user_posts,
'side':1,
'page_obj': page_obj,
}
return render(request, 'news/about_user.html',context)
{% extends 'news/base.html' %}
{% block title %}{% if user == username %}Моя сторінка{% else %} Сторінка користувача: {{ username.username }}{% endif%}{% endblock %}
{% block content %}
{% if about_user.avatar %}
<img src="{{about_user.avatar.url}}" alt="Изображение" style="float:left;margin: 5px 17px 7px 0;" width = 400 height="385">
<ul class="list-group">
{% endif %}
<li class="list-group-item"><b>Username:</b> {{ username.username }}</li>
<li class="list-group-item"><b>Ім'я:</b> {{ username.first_name }}</li>
<li class="list-group-item"><b>Прізвиcько:</b> {{ username.last_name }}</li>
<li class="list-group-item"><b>Зареєструвався:</b> {{ username.date_joined|date:'Y.m.d' }}</li>
<li class="list-group-item"><b>Останній раз був онлайн:</b> {{ username.last_login|timesince }} ago</li>
{% if about_user.country %}
<li class="list-group-item"><b>Країна:</b> {{ about_user.country }}</li>
{% endif %}
{% if about_user.city %}
<li class="list-group-item"><b>Місто:</b> {{ about_user.city }}</li>
{% endif %}
{% if about_user.age %}
<li class="list-group-item"><b>Вік:</b> {{ about_user.age }}</li>
{% endif %}
{% if about_user.about_user %}
<li class="list-group-item"><b>Про користувача:</b> {{ about_user.about_user }}</li>
{% endif %}
{% if about_user.link %}
<li class="list-group-item"><b>Посилання:</b> <a href="{{ about_user.link }}">{{ about_user.link }}</a></li>
{% endif %}
<br>
</ul>
{% if user == username %}
{% if about_user %}
{% else %}
<p><a href="{% url 'add_aboutuser' username.username %}"><button type="button" class="btn btn-success">Додати
ще</button></a>
{% endif %}
{% if about_user %}
<p><a href="{% url 'update_addaboutuser' about_user.id %}"><button type="button"
class="btn btn-warning">Редагувати</button></a></p>
{% endif %}
{% endif %}
<br>
{% if user_posts %}
{% if user == username %}
<p><b>Ваші публикації:</b></p>
{% else %}
<p><b>Публикації, які опублікував {{ username.username }}:</b></p>
{% endif %}
{% for i in user_posts %}
<div class="card-mb-3">
<div class="card-header">
Категорія: <a href="{{ i.category.get_absolute_url }}">{{i.category}}</a>
</div>
<div class="card-body">
<div class="media">
{% if i.photo %}
<img src="{{i.photo.url}}" alt="Изображение" width='350' height="215" style="float:left;margin: 5px 17px 7px 0;">
{% else %}
<img src="https://picsum.photos/350/235?grayscale" alt="Изображение" style="float:left;margin: 7px 17px 22px 0;">
{% endif %}
</div>
<div class="media-body">
{% autoescape off %}
<h5 class="card-title">{{ i.title|escape }}</h5>
<p class="card-text">{{ i.content|linebreaks|truncatewords:125 }}</p>
{% endautoescape %}
<p style="float:left; width:50%"><a href="{{ i.get_absolute_url }}" class="btn btn-primary">Read more...</a></p>
<p style="text-align:right;"><b>{{ i.created_at|date:'Y.m.d | H:i' }}</b></p>
</div>
</div>
{% endfor %}
{% else %}
{% if user == username%}
<p>Ви покищо нічого не опублікували. Зробіть це! <a href="{% url 'add_new' %}"><button type="button"
class="btn btn-success" style="margin: 10px; ;">Створити публікацію</button></a></p>
{% endif %}
{% endif %}
</div>
<!--Вот тут начинается пагинация-->
<div class="pagination">
<span class="step-links">
{% if page_obj.has_previous %}
<a href="?page=1">« first</a>
<a href="?page={{ page_obj.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
</span>
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">next</a>
<a href="?page={{ page_obj.paginator.num_pages }}">last »</a>
{% endif %}
</span>
</div>
{% endblock %}
from django.core.paginator import Paginator
====================================
# получаем список pub_id по параметрам
pubidlist=get_pub_id_by_params(cat_id=set(cat_id), tag=set(tag),
order=order, direction=direction)
# осуществляем пагинацию
paginator = Paginator(pubidlist, size)
if page>paginator.num_pages:
if template=="ajaxMorePub.html":
return render(request, "emptypublist.html")
page=paginator.num_pages
pubidlist = paginator.get_page(page)
# запрашиваем модель данных
pubmodel=get_pub_model(pubidlist,
order=order, direction=direction)
====================================
response = render(request, template, {
'pub_sorted': pubmodel.items(),
'order': order, 'size': size, 'direction': direction,
'page_range': paginator.page_range,
'num_pages': paginator.num_pages,
'paginator': paginator.page(page),
'page': page
})
{% if pub_sorted|length != 0 %}
<nav aria-label="pagination">
<ul class="pagination justify-content-center">
<!-- Первая страница -->
<li class="page-item {% if page == 1 %}disabled{% endif %}"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page=1&size={{ size }}&order={{ order }}&direction={{ direction }}">Первая</a> </li>
<!-- Если существует предыдущая страница --> {% if paginator.has_previous %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ paginator.previous_page_number }}&size={{ size }}&order={{ order }}&direction={{ direction }}">«</a> </li>
{% else %} <li class="page-item disabled"> <a class="page-link" href="#">«</a> </li>
{% endif %} <!-- Если нет страницы +1, но есть страница -6 --> {% if page|add:"1" not in page_range and page|add:"-6" in page_range %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ page|add:"-6" }}&size={{ size }}&order={{ order }}&direction={{ direction }}">{{ page|add:"-6" }}</a> </li>
{% endif %} <!-- Если нет страницы +2, но есть страница -5 --> {% if page|add:"2" not in page_range and page|add:"-5" in page_range %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ page|add:"-5" }}&size={{ size }}&order={{ order }}&direction={{ direction }}">{{ page|add:"-5" }}</a> </li>
{% endif %} <!-- Если нет страницы +3, но есть страница -4 --> {% if page|add:"3" not in page_range and page|add:"-4" in page_range %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ page|add:"-4" }}&size={{ size }}&order={{ order }}&direction={{ direction }}">{{ page|add:"-4" }}</a> </li>
{% endif %} <!-- Если существует страница текущая - 3 --> {% if page|add:"-3" in page_range %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ page|add:"-3" }}&size={{ size }}&order={{ order }}&direction={{ direction }}">{{ page|add:"-3" }}</a> </li>
{% endif %} <!-- Если существует страница текущая - 2 --> {% if page|add:"-2" in page_range %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ page|add:"-2" }}&size={{ size }}&order={{ order }}&direction={{ direction }}">{{ page|add:"-2" }}</a> </li>
{% endif %} <!-- Если существует страница текущая - 1 --> {% if page|add:"-1" in page_range %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ page|add:"-1" }}&size={{ size }}&order={{ order }}&direction={{ direction }}">{{ page|add:"-1" }}</a> </li>
{% endif %} <!-- Текущая активная страница -->
<li class="page-item active"> <a class="page-link" href="#">{{ page }}</a> </li>
<!-- Если существует страница текущая + 1 --> {% if page|add:"1" in page_range %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ page|add:"1" }}&size={{ size }}&order={{ order }}&direction={{ direction }}">{{ page|add:"1" }}</a> </li>
{% endif %} <!-- Если существует страница текущая + 2 --> {% if page|add:"2" in page_range %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ page|add:"2" }}&size={{ size }}&order={{ order }}&direction={{ direction }}">{{ page|add:"2" }}</a> </li>
{% endif %} <!-- Если существует страница текущая + 3 --> {% if page|add:"3" in page_range %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ page|add:"3" }}&size={{ size }}&order={{ order }}&direction={{ direction }}">{{ page|add:"3" }}</a> </li>
{% endif %} <!-- Если нет страницы -3, но есть страница +4 --> {% if page|add:"-3" not in page_range and page|add:"4" in page_range %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ page|add:"4" }}&size={{ size }}&order={{ order }}&direction={{ direction }}">{{ page|add:"4" }}</a> </li>
{% endif %} <!-- Если нет страницы -2, но есть страница +5 --> {% if page|add:"-2" not in page_range and page|add:"5" in page_range %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ page|add:"5" }}&size={{ size }}&order={{ order }}&direction={{ direction }}">{{ page|add:"5" }}</a> </li>
{% endif %} <!-- Если нет страницы -1, но есть страница +6 --> {% if page|add:"-1" not in page_range and page|add:"6" in page_range %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ page|add:"6" }}&size={{ size }}&order={{ order }}&direction={{ direction }}">{{ page|add:"6" }}</a> </li>
{% endif %} <!-- Если существует следующая страница --> {% if paginator.has_next %}
<li class="page-item"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ paginator.next_page_number }}&size={{ size }}&order={{ order }}&direction={{ direction }}">»</a> </li>
{% else %}
<li class="page-item disabled"> <a class="page-link" href="#">»</a> </li>
{% endif %} <!-- Последняя страница -->
<li class="page-item {% if page == num_pages %}disabled{% endif %}"> <a class="page-link" href="/mytestblog/publication/?cat={{ cat_id_join }}{% if tag.0 != "" %}&tag={{ tagstr_param }}{% endif %}&page={{ num_pages }}&size={{ size }}&order={{ order }}&direction={{ direction }}">Последняя</a> </li>
</ul>
</nav>
{% endif %}