На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Мини приложение учета книг (Python, Django, Django REST Framework, SQLite, React.js)

Скриншот архива с проектом

Структура проекта

Задание

Ваша задача состоит в том, чтобы разработать мини-приложение для работы с api-запросами. Приложение должно позволять работать с определенными данными, например в качестве предметной области может быть выбран - учёт книг. Приложение должно облатать функционалом позволяющим добавлять, редактировать и удалять книги с помощью api-запросов.  Кроме того вам необходимо реализовать клиентскую часть, чтобы видеть те данные, что хранятся на сервере. Для этих целей используйте React.js. Для работы с api используйте - Django REST Framework.  

Средства разработки

  • Python;
  • Django;
  • Django REST Framework
  • django-cleanup;
  • PILLOW;
  • React.js;
  • среда разработки - Visual Studio Code
  • Git.

Функционал программы

  • добавление новой книги
  • редактирование книги
  • удаление книги

Описанный выше функционал реализуется через админку приложения реализованного на Django / Django REST Framework и через api-запросы. 

  • добавление книги
  • поиск книги по названию
  • печать данных

Данный функционал реализован с помощью React.js

Фрагмент программного кода (сервер / бэкенд)

from django.db import models

# Create your models here.


class Book(models.Model):
    objects = None
    photo = models.ImageField(upload_to='uploads/images',
                              help_text="Введите фото",
                              verbose_name="Обложка",
                              null=False, blank=False)

    name = models.CharField(max_length=100, help_text="Введите название книги",
                            verbose_name='Название книги', null=False, blank=False)
    description = models.TextField(help_text="Введите описание книги",
                                   verbose_name="Описание книги", null=False, blank=False)
    genre = models.CharField(max_length=100, help_text="Введите жанр книги",
                             verbose_name='Жанр книги', null=False, blank=False)
    price = models.DecimalField(help_text="Введите цену книги",
                                verbose_name="Цена книги", max_digits=10, decimal_places=2)
    author = models.CharField(max_length=100, help_text="Введите автора книги",
                              verbose_name='Автор', null=False, blank=False)

    def __str__(self):
        return f'Наименование: {self.name} Описание: {self.description}'

    class Meta:
        verbose_name = 'Книга'
        verbose_name_plural = 'Книги'

Фрагмент программного кода (клиент / фронтенд)

import axios from 'axios';
import React, {useState, useEffect} from 'react'
import { useHistory } from 'react-router';
import { useNavigate } from 'react-router-dom';

const AddBook = () => {

    const genres = [
        'Триллер',
        'Детектив',
        'Мистика',
        'Ужасы',
        'Фантастика',       
    ]; 

    const [photo, setPhoto] = useState(null); // Изначально пустая строка
    const [name, setName] = useState(''); // Изначально пустая строка
    const [description, setDescription] = useState(''); // Изначально пустая строка    
    const [genre, setGenre] = useState(''); // Изначально пустая строка
    const [price, setPrice] = useState(''); // Изначально пустая строка
    const [author, setAuthor] = useState(''); // Изначально пустая строка   

    const navigate = useNavigate();

    const AddBookInfo = async () => {
        let formfield = new FormData()       
        
        formfield.append('name', name)
        formfield.append('description', description)
        formfield.append('genre', genre)
        formfield.append('price', price)
        formfield.append('author', author)       

        if (photo != null){
            formfield.append('photo', photo)
        }

        try {
            const response = await axios.post('http://localhost:8000/api/books/', formfield);
            console.log(response.data);
            // Add your logic to handle successful order creation
            // For example, you can redirect the user or show a success message
            navigate('/');
        } catch (error) {
            console.error('Error adding order:', error);
            // Handle the error (e.g., display an error message to the user)
        }
    }

    return (
        <div>
            <h1>Добавить книгу</h1>
            <div className='container'>
                <div className='form-group'>
                    <div className='form-control'>     
                        <label>Выберите фото книги</label>                  
                        <input 
                            type='file' 
                            className='form-control form-control-lg'                             
                            name='photo'
                            onChange={(e) => setPhoto(e.target.files[0])}
                        />
                    </div>
                    <div className='form-control'>
                        <input 
                            type='text' 
                            className='form-control form-control-lg' 
                            placeholder='Введите название книги'
                            name='name' value={name}
                            onChange={(e) => setName(e.target.value)}
                        />
                    </div>
                    <div className='form-control'>
                        <input 
                            type='text' 
                            className='form-control form-control-lg' 
                            placeholder='Введите описание'
                            name='description' value={description}
                            onChange={(e) => setDescription(e.target.value)}
                        />
                    </div>                    
                    <div className='form-control'>
                        <select 
                            className='form-control form-control-lg'
                            value={genre}
                            onChange={(e) => setGenre(e.target.value)}
                        >
                            <option value="">Выберите жанр</option> 
                            {genres.map((genre) => (
                            <option key={genre} value={genre}>
                                {genre}
                            </option>
                            ))}
                        </select>
                    </div>                   
                    <div className='form-control'>
                        <input
                            type='number' 
                            className='form-control form-control-lg' 
                            placeholder='Цена'
                            name='price'
                            value={price}
                            onChange={(e) => setPrice(e.target.value)} 
                        />
                    </div>    
                    <div className='form-control'>
                        <input 
                            type='text' 
                            className='form-control form-control-lg' 
                            placeholder='Введите автора'
                            name='author' value={author}
                            onChange={(e) => setAuthor(e.target.value)}
                        />
                    </div>                     
                    
                    <button className='btn btn-primary' type="submit" 
                        onClick={AddBookInfo}>Добавить книгу</button>
                </div>
            </div>
        </div>
    );
}

export default AddBook;

Пояснения по запуску программы

Для эффективной работы с приложением вам потребуется: 

  •  редактор кода VS Code - скачать можно тут - https://code.visualstudio.com/download 
  • интерпретатор языка Python, скачать можно тут - https://www.python.org/downloads/ 
  • После установки всего выше описанного, настройте VS Code  для работы с Python установив необходимые расширения (см. инструкцию - https://youtu.be/j5e5gwZgMH8) .
  • Для восстановления модулей в приложении client необходимо 1. перейти в это приложение - cd Frontend - cd React_Project - cd client - npm install2. Установить модули:1. npm install react-bootstrap bootstrap2. npm i react-router3. npm i react-router-dom4. npm i axios
  • Убедитесь что у вас установлен Node.js. Чтобы запустить приложение пишем поманду cd client - npm start
  • Кликаем по ссылке в терминале VS Code
  • Для того чтобы работал сервер реализованный на Django REST Framework необходимо:1. Убедится что у вас установлен Python2. Переустановить библиотеки:1. pip install django2. pip install djangorestframework3. pip install django-cors-headers4. pip install django-cleanup - очистка медиа5. pip install Pillow
  • Для запуска сервера переходим в папку Backend - cd Backend - cd Django_Project - cd server - python manage.py runserver 
  • Кликаем по ссылке в терминале VS Code

Купить 3000,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Купить

3000,00 

Покупается впервые!
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

Мини проект Django_React_Учёт_книг.rar
15849842
Оцени работу

рейтинг

Мини приложение учета книг (Python, Django, Django REST Framework, SQLite, React.js)
Данное приложение представляет собой веб-сервис для учета книг. Приложение реализовано всем правилам разработки приложений с разделением на бэкенд и фронтенд части. Бэкенд - серверная часть приложения, предоставляющая доступ к данным посредством api-запросов. Бэкенд связан с клиентской частью - фронтенд частью реализованной на фреймворке React. Приложение позволяет добавлять книги и искать их по названию.
Категория: Образование
Стоимость: 3000,00