قالب های صفحه بندی با قابلیت استفاده مجدد

سلام مشابه با آنچه در خصوص قالب form.html انجام شد؛ می توانیم تغییرات مشابهی را برای صفحه بندی و شماره گذاری صفحات انجام دهیم. برای این کار ابتدا صفحات پست های یک تاپیک را صفحه گذاری کرده و سپس دنبال راهی برای قابلیت استفاده مجدد در کامپوننت صفحه بندی پیدا می کنیم. boards/views.py (مشاهده کد […]

ویوی حساب کاربری

سلام خیلی خوب! حالا نوبت آن رسیده تا آخرین ویوی برنامه را بروزرسانی کنیم. بعد از این کار صرفاً به بهبود ویوهای موجود می پردازیم. accounts/views.py (مشاهده کد کامل) from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User from django.urls import reverse_lazy from django.utils.decorators import method_decorator from django.views.generic import UpdateView @method_decorator(login_required, name=’dispatch’) class UserUpdateView(UpdateView): model = […]

صفحه بندی با استفاده از GCBV

سلام در ادامه پیاده سازی مشابهی را و البته با استفاده از ListView می بینیم. boards/views.py (مشاهده کد کامل) class TopicListView(ListView): model = Topic context_object_name = ‘topics’ template_name = ‘topics.html’ paginate_by = 20 def get_context_data(self, **kwargs): kwargs[‘board’] = self.board return super().get_context_data(**kwargs) def get_queryset(self): self.board = get_object_or_404(Board, pk=self.kwargs.get(‘pk’)) queryset = self.board.topics.order_by(‘-last_updated’).annotate(replies=Count(‘posts’) – 1) return queryset تعامل […]

صفحه بندی با استفاده از FBV

سلام کد زیر مربوط به پیاده سازی صفحه بندی با استفاده از توابع است. boards/views.py (مشاهده کد کامل) from django.db.models import Count from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.shortcuts import get_object_or_404, render from django.views.generic import ListView from .models import Board def board_topics(request, pk): board = get_object_or_404(Board, pk=pk) queryset = board.topics.order_by(‘-last_updated’).annotate(replies=Count(‘posts’) – 1) page = […]

صفحه بندی و شماره گذاری صفحات

سلام این کار با استفاده از CBV بسیار آسان است. اما قبل از آن می خواهیم صفحه بندی مطالب را به صورت دستی انجام دهیم تا از مکانیسم واقعی آن آگاهی پیدا کنی و سپس از تکنولوژی CBV بهره برداری می کنیم. از الآن به بعد روی ویوی board_topics کار می کنیم. در مرحلۀ اول […]

ویوی لیست | List View

سلام با بازتعریف ویوی قبلی می توانیم از مزایای CBV بهره مند شویم. در این مثال می خواهیم صفحۀ اصلی را تغییر دهیم. در این صفحه ما صرفا تمام بوردها را از دیتابیس گرفته و در HTML لیست می کنیم. boards/views.py from django.shortcuts import render from .models import Board def home(request): boards = Board.objects.all() return […]