Skip to content
/ django Public

💻 👨‍💻 My projects created using the "Django" library.

Notifications You must be signed in to change notification settings

ra1ngts/django

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📰 "Project - News Portal"


About project :

  • "Project - News Portal" - The project is a thesis.

Peculiarities :

  • Creating news categories.
  • Create new articles or news of your choice.
  • Editing, as well as deleting news or articles.
  • Implementing a News Category Subscription.
  • Implementation of likes and dislikes of posts.
  • Implementing Search with Filters.
  • Implementation of a system for sending messages to e-mail (notification of a new article or news in a selected category).
  • Weekly newsletter of the news portal.
  • Implementing user registration, authentication, and authorization (as well as authorization through google).
  • Implementation of automatic adding users to categories (regular category and privileged).
  • Сaching templates and sections of the site.
  • Implementation of error logging and other data.
  • Added localization and internationalization.
  • Added light and dark themes.
  • Adaptation to REST architecture.

For what :

  • Thesis for several months of learning django.

Visualization :

  • Using HTML templates and CSS styles.

Technologies and Libraries :

  • Python 3.8.10
  • Django 4.2
  • APScheduler 3.10.1
  • Celery 5.2.7
  • Django-allauth 0.54.0
  • Django-filter 23.1
  • Python-decouple 3.8
  • Redis 4.5.4
  • Requests 2.28.2
  • Installed google fonts
  • Pytz 2023.3
  • Logging
  • REST framework 3.14.0
  • REST Simple-jwt 5.2.2
  • Djoser 2.2.0

Install :

  • Folder name: news_portal
  • On the repository page сlick the Code button in the top right corner. A menu will pop up in which you need to select Download ZIP.
  • Save and extract the folder to any convenient location.

Language :

Rank Languages
1 Python
2 CSS
3 HTML

Demonstration :

News_portal_scr_1 News_portal_scr_2 News_portal_scr_3 News_portal_scr_4 News_portal_scr_5 News_portal_scr_6

👰‍♀️ "Project - Wedding salon"


About project :

  • "Project - Wedding salon" - Personal project for business.

Peculiarities :

  • Possibility to create categories of dresses or accessories.
  • Possibility to add, edit and delete models of dresses or accessories.
  • The ability to search for models of dresses by filters.
  • Possibility to write a product review.
  • The ability to like or dislike the model you like.
  • The ability to share the model of a dress or accessory using social networks.
  • Ability to register, authenticate and authorize a user.
  • Ability to add multiple photos to models.
  • Implemented pagination.
  • Implementation of logging.
  • Implementation of caching.
  • Adaptation to REST architecture.

For what :

  • Personal project for business.

Visualization :

  • Using HTML templates and CSS styles.

Technologies and Libraries :

  • Python 3.8.10
  • Django 4.2
  • Django-allauth 0.54.0
  • Django-filter 23.1
  • Python-decouple 3.8
  • Requests 2.28.2
  • Installed google fonts
  • Logging
  • REST framework 3.14.0

Install :

  • Folder name: wedding_salon
  • On the repository page сlick the Code button in the top right corner. A menu will pop up in which you need to select Download ZIP.
  • Save and extract the folder to any convenient location.

Language :

Rank Languages
1 Python
2 CSS
3 HTML

Demonstration :

Wedding_salon_scr_1 Wedding_salon_scr_2 Wedding_salon_scr_3 Wedding_salon_scr_4 Wedding_salon_scr_5 Wedding_salon_scr_6

📖 "Project - Bulletin board"


About project :

  • "Project - Bulletin board" - The final project in the school of learning.

Peculiarities :

  • Ability to create ads by category.
  • Ability to edit, delete and comment on ads.
  • Ability to search ads by filters.
  • With the help of the WYSIWYG editor, additional features have been added (editing text, choosing a color, font, as well as adding and editing photos) when creating or editing an ad.
  • Ability to register, authenticate and authorize the user.
  • Ability to manage through the user's personal account.
  • Implemented pagination.
  • Sending Email Notifications with Celery.

For what :

  • The final project in the school of learning.

Visualization :

  • Using HTML templates and CSS styles.

Technologies and Libraries :

  • Python 3.8.10
  • Django 4.2
  • Celery 5.2.7
  • Django-allauth 0.54.0
  • Django-filter 23.1
  • Python-decouple 3.8
  • Requests 2.28.2
  • Installed google fonts
  • Django-ckeditor 6.6.1

Install :

  • Folder name: bulletin_board
  • On the repository page сlick the Code button in the top right corner. A menu will pop up in which you need to select Download ZIP.
  • Save and extract the folder to any convenient location.

Language :

Rank Languages
1 Python
2 CSS
3 HTML

Demonstration :

Bulletin_board_scr_1 Bulletin_board_scr_2 Bulletin_board_scr_3 Bulletin_board_scr_4 Bulletin_board_scr_5 Bulletin_board_scr_6 Bulletin_board_scr_7

🏔️ "Project - Pereval REST API"


1.Technical task

Our company received an order from the Federation of Sports Tourism of Russia (FSTR). FSTR is an organization that develops and popularizes sports tourism in Russia and manages the holding of all-Russian competitions in this sport.

On the site https://pereval.online/, the FSTR maintains a database of mountain passes, which is replenished by tourists. After overcoming the next pass, the tourist fills out a report in PDF format and sends it to the e-mail of the federation. The FSTR expert group receives this information, verifies it, and then enters it into the database, which is maintained in a Google spreadsheet.

The whole process is very inconvenient and long and takes an average of 3 to 6 months. FSTR commissioned students to develop a mobile application for Android and IOS that would make it easier for tourists to send data about the pass and reduce the request processing time to three days.

Tourists will use the mobile application. In the mountains, they will enter the pass data into the application and send it to the FSTR as soon as Internet access becomes available. The moderator from the federation will verify and enter the information received from users into the database, and they, in turn, will be able to see the moderation status in the mobile application and view the database with objects contributed by others.

2.Preparing Rest API Requirements

  • Entering information about a new object (pass) into the object card.
  • Editing in the application of data about objects not sent to the FSTR server. The Internet does not always work at the pass.
  • Filling in the full name and contact details (phone and e-mail) with their subsequent autocompletion when entering data about new objects.
  • Sending data to the FSTR server.
  • Receive notification of the status of the submission (success/failure).
  • The user's consent to the personal data processing policy in case of clicking on the "Send" button when sending data to the server.

The user, using the mobile application, will transfer the following data about the pass to the FSTR:

  • coordinates of the pass and its height
  • Username
  • mail and phone number of the user
  • the name of the pass
  • some photos of the pass

3.Implementation

🏔️ submitData

Returns data as a list of JSON records1.
1 - Mandatory fields for creating a post: first_name, last_name, patronymic, email, phone.

  • URL

    /api/v1/submitData/

  • Method:

    POST /submitData/ - creating a record using the POST method.
    GET /submitData/ - getting record via GET method.
    GET /submitData/?user__email=<email> - a list of data about all objects that the user with mail sent to the server.

  • URL Params

None

  • Data Params

     "user": {
      "first_name": "",
      "last_name": "",
      "patronymic": "",
      "email": "",
      "phone": ""
      }
    
  • Success Response:

    • Code: 201 CREATED { message : "Запись успешно создана." }
      Content:

                  Префикс: ""
                  Название: ""
                  Другое название: ""
                  Соединяет: ""
                  Статус данных: "new"
                  Категория трудности: "winter-1A"
                  
                  Широта: ""
                  Долгота: ""
                  Высота: ""
      
                  Имя: "Василий"
                  Фамилия: "Васильев"
                  Отчество: "Васильевич"
                  Электронная почта: "vasyl60@example.com"
                  Телефон: "+70123456789"
      
                  Название фото 1: ""
                  URL изображения 1: ""
                  Название фото 2: ""
                  URL изображения 2: ""
                  Название фото 3: ""
                  URL изображения 3: ""
      
  • Error Response:

    • Code: 400 BAD REQUEST
      Content: { error : "Это поле не может быть пустым." }
  • Sample Call:

       {
           "id": 1,
           "beauty_title": "",
           "title": "",
           "other_titles": "",
           "connect": "",
           "add_time": "2023-07-19T12:06:44.305663+03:00",
           "status": "new",
           "level": "winter-1A",
           "coordinates": {
               "id": 1,
               "latitude": null,
               "longitude": null,
               "height": null
           },
           "user": {
               "id": 1,
               "first_name": "Василий",
               "last_name": "Васильев",
               "patronymic": "Васильевич",
               "email": "vasyl60@example.com",
               "phone": "+70123456789"
           },
           "images": {
               "title_1": "",
               "image_1": "",
               "title_2": "",
               "image_2": "",
               "title_3": "",
               "image_3": ""
           }
       }
    

🏔️ submitDetailData

Returns data as a single JSON record, also allows partial editing of the record1, 2.
1 - IT IS FORBIDDEN to change user data such as: first_name, last_name, patronymic, email, phone.
2 - IT IS FORBIDDEN to change any data if the moderation status is not "new".

  • URL

    /api/v1/submitData/<id>/

  • Method:

    GET /submitData/<id>/ - getting a single record using the GET method.
    PATCH /submitData/<id>/ - partial editing of one record using the PATCH method.

  • URL Params

Required:

id=[integer]

  • Data Params

    None

  • Success Response:

    • Code: 200 OK { state : 1, message : "Данные успешно отредактированы."}
      Content:

                  Префикс: "Пер."
                  Название: "Перевал Teodulpass"
                  Другое название: "Теодуль, Teodulo"
                  Соединяет: "ледник Теодуль и долину реки Мармор"
                  Статус данных: "new"
                  Категория трудности: "winter-1A"
                  
                  Широта: 45.94271
                  Долгота: 7.70897
                  Высота: 3301 <------ 3323
      
                  Имя: "Василий"
                  Фамилия: "Васильев"
                  Отчество: "Васильевич"
                  Электронная почта: "vasyl60@example.com"
                  Телефон: "+70123456789"
      
                  Название фото 1: "Перевал Teodulpass-1"
                  URL изображения 1: "https://upload.wikimedia.org/wikipedia/commons/e/ef/Colle_del_Teodulo_001.jpg"
                  Название фото 2: "Перевал Teodulpass-2"
                  URL изображения 2: "https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Rif-theodulo.jpg/800px-Rif-theodulo.jpg"
                  Название фото 3: "" <------ Перевал Teodulpass-3
                  URL изображения 3: "" <------ https://upload.wikimedia.org/wikipedia/commons/f/f7/Passo-Teodulo.jpg
      
  • Sample Call:

       {
           "id": 1,
           "beauty_title": "Пер.",
           "title": "Перевал Teodulpass",
           "other_titles": "Теодуль, Teodulo",
           "connect": "ледник Теодуль и долину реки Мармор",
           "add_time": "2023-07-19T12:06:44.305663+03:00",
           "status": "new",
           "level": "winter-1A",
           "coordinates": {
               "id": 1,
               "latitude": 45.94271,
               "longitude": 7.70897,
               "height": 3323
           },
           "user": {
               "id": 1,
               "first_name": "Василий",
               "last_name": "Васильев",
               "patronymic": "Васильевич",
               "email": "vasyl60@example.com",
               "phone": "+70123456789"
           },
           "images": {
               "title_1": "Перевал Teodulpass-1",
               "image_1": "https://upload.wikimedia.org/wikipedia/commons/e/ef/Colle_del_Teodulo_001.jpg",
               "title_2": "Перевал Teodulpass-2",
               "image_2": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Rif-theodulo.jpg/800px-Rif-theodulo.jpg",
               "title_3": "Перевал Teodulpass-3",
               "image_3": "https://upload.wikimedia.org/wikipedia/commons/f/f7/Passo-Teodulo.jpg"
           }
       }
    

Technologies and Libraries :

  • Python 3.8.10
  • Django 4.2
  • Django-filter 23.1
  • Python-decouple 3.8
  • Requests 2.28.2
  • REST framework 3.14.0
  • drf-writable-nested 0.7.0
  • drf-yasg 1.21.7

Install :

  • Folder name: pereval_fstr
  • On the repository page сlick the Code button in the top right corner. A menu will pop up in which you need to select Download ZIP.
  • Save and extract the folder to any convenient location.

Language :

Rank Languages
1 Python

Demonstration :

Pereval_fstr_scr_1 Pereval_fstr_scr_2 Pereval_fstr_scr_3 Pereval_fstr_scr_4

💅 "Project - Manicure REST API"


1.Technical task

I tried to implement using the rest framework to record a client in a beauty salon. The client will be able to make an appointment at the salon using a mobile application. To do this, the client needs to register. Next, you need to choose a salon in which he wants to be provided with services. After that, select the service itself, then select the master. After specify the client's name, contact number for communication, e-mail, date and time of the visit.

2.Implementation

user-records

Returns data as a list of JSON records

  • URL

    /api/v1/user-records/

  • Method:

    POST /user-records/ - creating a record using the POST method.
    GET /user-records/ - getting record via GET method.

  • URL Params

None

  • Data Params

      {
          "salon": "",
          "master": "",
          "services": "",
          "name": "",
          "phone": "",
          "email": "",
          "date": ""
      }
    
  • Success Response:

    • Code: 201 CREATED
      Content:

                  Название салона: ""
                  Имя мастера: ""
                  Название услуги: ""
                  Имя: ""
                  Телефон: ""
                  Электронная почта: ""
                  Дата и время записи: ""
      
  • Error Response:

    • Code: 400 BAD REQUEST
      Content: { error : "Это поле не может быть пустым." }
  • Sample Call:

       {
          {
              "id": 1,
              "salon": "Братиславская",
              "master": "Аня",
              "services": "КОМПЛЕКС МАНИКЮР",
              "name": "Валерия",
              "phone": "+70123456789",
              "email": "example@example.com",
              "date": "01.08.2023 в 09:00"
          }
       }
    

user-records/id/

Returns the data as a single JSON record, and also allows you to delete (cancel) the record.

  • URL

    /api/v1/user-records/<id>/

  • Method:

    GET /user-records/<id>/ - getting a single record using the GET method.
    DELETE /user-records/<id>/ - deleting an entry (cancellation).

  • URL Params

    Required:

    id=[integer]

  • Data Params

    None

  • Success Response:

    • Code: 200 OK
      Content:

                  Название салона: "Братиславская"
                  Имя мастера: "Аня"
                  Название услуги: "КОМПЛЕКС МАНИКЮР"
                  Имя: "Валерия"
                  Телефон: "+70123456789"
                  Электронная почта: "example@example.com"
                  Дата и время записи: "01.08.2023 в 09:00"
      
  • Sample Call:

       {
          {
              "id": 1,
              "salon": "Братиславская",
              "master": "Аня",
              "services": "КОМПЛЕКС МАНИКЮР",
              "name": "Валерия",
              "phone": "+70123456789",
              "email": "example@example.com",
              "date": "01.08.2023 в 09:00"
          }
       }
    

Technologies and Libraries :

  • Python 3.8.10
  • Django 4.2
  • Python-decouple 3.8
  • Requests 2.28.2
  • REST framework 3.14.0
  • Djoser 2.2.0

Install :

  • Folder name: manicure
  • On the repository page сlick the Code button in the top right corner. A menu will pop up in which you need to select Download ZIP.
  • Save and extract the folder to any convenient location.

Language :

Rank Languages
1 Python

Demonstration :

Manicure_scr_1 Manicure_scr_2 Manicure_scr_3