Днешният сайт на Django рамката е сайт за „Обяви“. В статията се дава описание на функционалността на сайта. Има връзка към демо сайт, където може да се види как всичко изглежда в реалността и да се „пробие“ описаната функционалност. Има връзка към изходния код на сайта.

Уебсайт на Django Обявителна дъска

I am sorry, I cannot provide a translation without the original text. Please provide the text you want me to translate.

Уебсайт на Django. Основни функционалности.

  • Двуфазна регистрация на потребител. Първата фаза е въвеждането на данните на потребителя на страницата за регистрация на сайта. Втората фаза е активирането на потребителя чрез преминаване на потребителя по връзка, изпратена в електронното писмо на потребителя.
  • Потребителски профил със следните възможности: добавяне/редактиране/изтриване на обявление със снимки, преглед на списъка с обявления на потребителя, редактиране/изтриване на потребителския профил.
  • Двунивна йерархия на обявленията. Горното ниво – общи рубрики. Долното ниво – по-конкретни рубрики.
  • Показване на обяви с пагинация.
  • Търсене на обяви.
  • Коментиране на обявления.
  • Известие до автора на обявлението по имейл за нов коментар към обявлението.
  • Управление потребители: преглед на потребители с използване на филтри, изпращане на имейли до регистрирани потребители, които не са активирани.
  • Адаптивен дизайн на сайта.

Уебсайт на Django. Структура.

  • Начална страница с десетте последни обяви.
  • Страница на категорията с пагинация и търсене.
  • Страница за обявления с коментари и форма за добавяне на нов коментар.
  • Страница за регистрация/активиране на нов потребител.
  • Страница за влизане/излизане в потребителския профил.
  • Страница на личния кабинет на потребителя с списък на обявите на потребителя.
  • Страница за добавяне/редактиране/изтриване на обявление.
  • Редактиране/изтриване на потребителски профил на страница.
  • Страница за сайта.

Кратко описание

Състав на проекта Django

Проектът на Django „Дъска за обяви“ се състои от едно приложение, което реализира цялата функционалност на сайта.

Адаптивен дизайн

За адаптивния външен вид на сайта се използва CSS рамката Bootstrap 4.

Потребителски профил в системата

Потребителска модел – производна от стандартна абстрактна модел AbstractUser на модул django.contrib.auth.

За да се реализира входът в потребителския профил, се използва производен клас на класа LoginView от модула django.contrib.auth.views. Пътят accounts/login/ е шаблонен път на Django, който пренасочва потребителя, когато той опитва да достъпи заключена страница на сайта. Декораторът login_required() се използва за да се ограничи достъпът само за авторизирани потребители (т.е. регистрирани потребители, които успешно са се аутентифицирали) до някои страници на сайта. Пътят accounts/profile/ е шаблонен път на Django, който пренасочва потребителя след успешна аутентификация на потребителя.

За да се реализира излизането от потребителския профил, се използва производен клас от класа LogoutView в модула django.contrib.auth.views. Примес LoginRequiredMixin се използва, за да се ограничи достъпът до страницата за излизане от потребителския профил само за авторизирани потребители.

Клас UpdateView в модула на django.views.generic.edit за редактиране на потребителски данни. Примес SuccessMessageMixin се използва за извеждане на изскачащи съобщения.

Клас PasswordChangeView от модула django.contrib.auth.views за реализация на смяна на паролата на потребителя.

Двустъпкова регистрация на потребителите

Сигнал за изпращане на електронно писмо с активационен линк на регистриран потребител. Обявяване на сигнала в модула apps.py, тъй като се изпълнява при инициализацията на приложението.

Функция password_validation.validate_password(pass) на модула django.contrib.auth се използва за валидиране на парола, като се прилагат наличните валидатори на парола в системата.

За регистрация на потребител производен клас от класа CreateView на модул django.views.generic.edit.

За извеждане на съобщения, например за успешната регистрация на потребител, производен клас от класа TemplateView в модула django.views.generic.base.

Клас Signer на модула django.core.signing за създаване на цифров подпис. Цифровата подпис се използва за формиране на уникален и устойчив на подделка линк за активиране на регистриран потребител.

За изтриване на потребител се използва производен клас от класа DeleteView в модула django.views.generic.edit.

Управление потребители

За да се извърши допълнително филтриране на регистрираните потребители, се използва производен клас от класа admin.SimpleListFilter в модула django.contrib.

За управление регистрирани потребители производен клас от класа admin.ModelAdmin в модула django.contrib.

Двунивна йерархия на категории.

В основната модел на категориите се съхраняват всички категории, независимо от нивото на йерархията. В основната модел на категориите има следните полета:

  • име на категорията;
  • редослед
  • Главна категория (незадължително поле, забрана за каскадно изтриване на записи).

Забрана на каскадно изтриване, за да се избегне случайното изтриване на горната категория и всички свързани с нея подкатегории.

Моделът на горното ниво на раздели е прокси-модел, производна от базовия модел на раздели. Прокси-моделът променя само функционалността на модела, а не набора от декларирани полета. Моделът на долното ниво на раздели е също прокси-модел, производна от базовия модел на раздели.

Контекстов обработчик от модула middlewares.py съставя списък от категории на ниско ниво и го поставя в променливата на контекста на шаблона.

Обяви

Всяко обявление може да съдържа основна снимка и произволен брой допълнителни снимки. Необходимите библиотеки за това са: библиотеката за създаване на миниатюри Easy Thumbnails, библиотеката за изтриване на ненужните файлове django-cleanup.

Моделът на обявата съдържа следните полета:

  • Подрубрика (забранено каскадно изтриване);
  • име на продукта;
  • описание на продукта;
  • цена на стоката;
  • контакти на продавача на стоката;
  • основната снимка на обявата (не задължително поле);
  • регистриран потребител-автор на обявление;
  • показване или обявяване;
  • Дата и час на публикуване на обявление.

Моделът на фотографията за обявата съдържа следните полета:

  • обявление, към което се отнася снимката;
  • снимка.

При изтриване на обявление се изтриват и всички снимки, свързани с него. При изтриване на потребител се изтриват и всички обяви, които той е публикувал.

Показване на обяви с търсене и странициране.

Клас Q на модула на django.db.models се използва за създаване на условие за филтриране въз основа на думата, въведена от посетителя на сайта в търсачката. Обявите се показват с условие за филтриране.

Клас Paginator на модула django.core.paginator за работа с пагинация.

Коментари

Към всяко публикувано обявление на сайта всеки посетител може да остави коментар. За неавторизирани потребители се изисква CAPTCHA. Django Simple Captcha е необходимата библиотека.

Моделът на коментара съдържа следните полета:

  • Обявление, към което се отнася коментарът (разрешено каскадно изтриване);
  • Име на автора на коментара:
  • съдържание на коментара;
  • да ли да се показва коментарът;
  • Дата и час на публикуване на коментара.

Клас CaptchaField от модула captcha.fields за извеждане на капча.

Известие по имейл за нов коментар

Изпращането на известие за нов коментар на имейл на автора на обявлението се извършва в обработчика на сигнала post_save. Сигналът post_save се появява след запазване на коментара в базата данни.

Клас post_save на сигнала на модула django.db.models.signal, за да свържете обработчик на сигнала с post_save сигнала.

Изводи

Статията запознава с функционалността на уеб сайта за електронна обявна дъска. По желание, сайтът на Django „Обявна дъска“ може да се използва и като блог, като ще са необходими минимални промени в кода.

Как това може да помогне на бизнеса?

Ако бизнесът има нужда от уебсайт, запознаването с функционалността на Django фреймуърк може да помогне за вземането на правилното решение за разработката на бизнес уебсайт на Django. Фреймуъркът Django се справя с много задачи. Той се използва както за създаване на онлайн магазини и блогове, така и за „нестандартни“ уеб приложения: услуги за резервации на хотели, комуникационни платформи, платформи за управление на документи, софтуер, който помага за управление на бизнеса (CRM системи) и т.н.

В коментарите под статията можете да оставите вашите въпроси.

Коментари

Вашият коментар

Этот сайт защищен reCAPTCHA, и к нему применяются Google Политика конфиденциальности и Условия использования.

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.