انسانی کردن برنامه | Humanize

سلام برای اینکه برنامه همه‌فهم‌تر شود؛ پکیج هایی به صورت پیشفرض در جنگو ساخته شده است. برای مثال می خواهیم فیلد زمان و تاریخ را طبیعی‌تر کنیم. به جای اینکه تمام دیتای خود را نمایش دهیم؛ می نویسیم «دو دقیقه پیش» در اولین گام django.contrib.humanize را به INSTALLED_APPS اضافه می کنیم. myproject/settings.py INSTALLED_APPS = [ […]

ویرایشگر Markdown

سلام می خواهیم از یک ویرایشگر Markdown خیلی باحال به اسم SimpleMD استفاده کنیم. در ابتدا یا کتابخانۀ جاوا اسکریپت آن را دانلود یا از CDNشان استفاده می کنیم. <link rel=”stylesheet” href=”https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.css”> <script src=”https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.js”></script> هم می توان دو خط بالا را به فایل base.html اضافه کرد و هم این دو فایل را دانلود کرده و […]

اضافه کردن Markdown

سلام می خواهیم تجربه کاربری را با اضافه کردن markdown به قسمت متنی (textarea) فرم بهبود دهیم. این کار بسیار ساده و آسان خواهد بود. ابتدا کتابخانه Python-Markdown را نصب می کنیم. pip install markdown حالا می خواهیم به مدل Post یک متد اضافه می کنیم. boards/models.py (مشاهده کد کامل) from django.db import models from […]

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

سلام مشابه با آنچه در خصوص قالب 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 تعامل […]