An open API service indexing awesome lists of open source software.

https://github.com/topotun77/message_board

Доска объявлений на Django (python, Django, SQLite, Django ORM, HTML)
https://github.com/topotun77/message_board

django django-orm html python sqlite3

Last synced: 6 months ago
JSON representation

Доска объявлений на Django (python, Django, SQLite, Django ORM, HTML)

Awesome Lists containing this project

README

          

# Доска объявлений на Django

В данном проекте используется рендеринг шаблонов, авторизация и регистрация пользователей.
Пользователи регистрируются, авторизуются, могут добавлять новые объявления, редактировать уже созданные и просматривать существующие.

## История обновлений:

• Добавлены статики для светлой темы.
• Оформлен вывод форм для ввода данных в более красивом (на мой взгляд :) виде.
• Добавлена возможность редактирования объявления.
• Убрано лишнее поле `author` при создании нового и редактировании уже имеющегося объявления.
• Добавлена модель `Preferences` в модуль `user_preferences.py` для пользовательских предпочтений.
• Реализован выбор светлой или темной темы сайта для авторизованных пользователей.
• Исключена возможность редактирования чужих объявлений.
• Добавлена документация функций.
• Добавлена функция удаления выбранного объявления. Чужие объявления удалять нельзя.
• Добавлена загрузка изображения.
• Изменены шаблоны (список объявлений, просмотр деталей) для отображения изображений в объявлениях.
• Добавлена возможность просмотра изображения в полном размере по нажатию на картинку. Изображение открывается в новом окне.
• Добавлена возможность суперпользователю редактировать любое объявление.
• Добавлено разделение загруженных картинок по папкам.
• Добавлена модель Image для хранения дополнительных картинок к объявлению.
• Добавлена возможность отображать в деталях объявления несколько загруженных картинок.
• Добавлена возможность отображать в списке объявлений несколько загруженных картинок.
• Добавлена возможность оставлять комментарии под объявлениями.
• Добавлено имя автора к объявлению со ссылкой на список всех объявлений этого автора.
• Добавлен просмотр списка всех объявлений выбранного пользователя.
• Добавлены поля `like_coint` и `dislike_coint` в таблицу `Advertisement` для подсчета числа лайков/дизлайков.
• Добавлена модель `Like` для хранения лайков/дизлайков с привязкой к объявлениям и пользователям.
• На объявление можно поставить либо лайк, либо дизлайк. Если авторизованный пользователь ставил под этим объявлением лайк или дизлайк, то соответствующий значок становится цветным.
• Добавлена возможность генерировать картинки для объявлений через API Kandinsky 3.0. Для генерации используется заголовок и содержимое объявления.
• Добавлено журналирование.
• Добавлен вывод даты объявления и даты комментариев.
• Реализовано удаление дополнительных картинок.
• Реализовано добавление дополнительных картинок.
• Добавлена возможно загрузки нескольких картинок сразу.
• Добавлена модель `UserStat` для хранения статистики по пользователю (количество сообщений, лайков и дизлайков).
• Реализован подсчет статистики по пользователю через сигналы Django.
• Добавлено поле `comment_count` в модель `Статистика`.
• Добавлен раздел статистики доступный только суперпользователям. Отображает информацию по пользователям (количество сообщений, комментариев, лайков и дизлайков).
• Добавлена документация к модулю `kandinsky`.
• Добавлена пагинация на странице со списком объявлений.
• Добавлено поле `page_num` в модель `Preferences`.
• Добавлено сохранение для каждого пользователя его предпочтений по количеству объявлений на страницу.
• Добавлена возможность изменения и сброса пароля пользователя.
• Приложение размещено на Amvera по адресу: [https://messageboard-topotun77.amvera.io](https://messageboard-topotun77.amvera.io).
• Добавлено редактирование и удаление комментариев.

### Скриншот страницы со списком объявлений:
![img01](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n001.jpg?raw=true)
### Список объявлений для выбранного пользователя с указанием количества сообщений:
![img01](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n007.jpg?raw=true)
### Детализация выбранного объявления с лайками/дизлайками и возможномтью редактировать и удалять комментарии:
![img02](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n002.jpg?raw=true)
![img02](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n020.jpg?raw=true)
![img02](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n021.jpg?raw=true)
### Картинка в полном размере в новом окне:
![img02](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n006.jpg?raw=true)
### Редактирование объявления (интерфейс такой же, как и при добавлении нового объявления):
![img03](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n003.jpg?raw=true)
### Регистрация пользователя:
![img04](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n004.jpg?raw=true)
### Комментарии под объявлениями (интерфейс в темной теме):
![img04](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n014.jpg?raw=true)
### Интерфейс в темной теме:
![img10](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n010.jpg?raw=true)
### Все объявления выбранного пользователя:
![img10](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n011.jpg?raw=true)
### В админ-панели добавлен предварительный просмотр картинки:
![img10](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n015.jpg?raw=true)
### Статистика по пользователям:
![img10](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n016.jpg?raw=true)
### Раздел пользовательских настроек:
![img10](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n017.jpg?raw=true)
### Смена пароля:
![img10](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n018.jpg?raw=true)
### Восстановление пароля:
![img10](https://github.com/Topotun77/message_board/blob/master/ScreenShots/n019.jpg?raw=true)

## Для запуска:
1. Установите все необходимые зависимости, выполнив команду:
```
pip install -r requirements.txt
```
2. Укажите переменные окружения `API_KEY` и `SECRET_KEY` с ключами для API Kandynsky.
Для получения ключей нужно зарегистрироваться на [Fusion Brain](https://fusionbrain.ai/)
3. Для локального запуска:
- перейдите в каталог `board_project`, команда:
```
cd .\board_project\
```
- запустите код с помощью команды:
```
python manage.py runserver
```
4. Для запуска на сервере используйте команду:
```
cd board_project && gunicorn board_project.wsgi:application --bind 0.0.0.0:80
```