Добавил апи

This commit is contained in:
KessPen
2024-04-22 19:44:37 +07:00
parent 36b108f1ee
commit 7d292a814e
5 changed files with 126 additions and 5 deletions

View File

@@ -15,10 +15,11 @@ Including another URLconf
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, re_path
from django.views.generic import TemplateView
from django.urls import path, re_path, include
from django.views.generic import TemplateView, RedirectView
urlpatterns = [
path('admin/', admin.site.urls),
re_path('^.*$', TemplateView.as_view(template_name='index.html'))
re_path('^.*$', TemplateView.as_view(template_name='index.html')),
path('api/', include("SusMarketBackend.urls"))
]

View File

@@ -0,0 +1,74 @@
# Generated by Django 4.1 on 2024-04-22 12:20
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Category',
fields=[
('id', models.CharField(db_index=True, max_length=50, primary_key=True, serialize=False, unique=True, verbose_name='ID Категории')),
('title', models.CharField(max_length=50, verbose_name='Название Категории')),
('image', models.ImageField(upload_to='', verbose_name='Картинка категории')),
],
options={
'verbose_name': 'Категория',
'verbose_name_plural': 'Категории',
},
),
migrations.CreateModel(
name='Product',
fields=[
('id', models.AutoField(db_index=True, primary_key=True, serialize=False, unique=True, verbose_name='ID Товара')),
('title', models.CharField(max_length=50, verbose_name='Название Товара')),
('description', models.TextField(max_length=300, verbose_name='Описание товара')),
('price', models.PositiveIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(999)], verbose_name='Цена товара')),
('tags', models.TextField(max_length=300, verbose_name="Теги (Указывать через разделитель '|')")),
('icons', models.ImageField(upload_to='', verbose_name='Иконка товара')),
('date', models.DateTimeField(auto_now=True, verbose_name='Дата создания товара')),
('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='SusMarketBackend.category')),
],
options={
'verbose_name': 'Товар',
'verbose_name_plural': 'Товары',
},
),
migrations.CreateModel(
name='User',
fields=[
('id', models.AutoField(db_index=True, primary_key=True, serialize=False, unique=True, verbose_name='ID Пользователя')),
('login', models.CharField(max_length=50, verbose_name='Логин')),
('password', models.TextField(max_length=200, verbose_name='Пароль')),
('date', models.DateTimeField(auto_now=True, verbose_name='Дата создания пользователя')),
],
options={
'verbose_name': 'Пользователь',
'verbose_name_plural': 'Пользователи',
},
),
migrations.CreateModel(
name='Review',
fields=[
('id', models.AutoField(db_index=True, primary_key=True, serialize=False, unique=True, verbose_name='ID Отзыва')),
('commentary', models.TextField(max_length=300, verbose_name='Комментарий отзыва')),
('rate', models.PositiveIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(5)], verbose_name='Оценка')),
('icons', models.ImageField(null=True, upload_to='', verbose_name='Изображение отзыва')),
('date', models.DateTimeField(auto_now=True, verbose_name='Дата создания отзыва')),
('product', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='SusMarketBackend.product')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='SusMarketBackend.user')),
],
options={
'verbose_name': 'Отзыв',
'verbose_name_plural': 'Отзывы',
},
),
]

View File

@@ -38,7 +38,7 @@ class Product(models.Model):
class User(models.Model):
id = models.AutoField('ID Пользователя', unique=True, primary_key=True, db_index=True)
login = models.CharField('Логин', max_length=50)
password = models.TextField('Описание товара', max_length=900)
password = models.TextField('Пароль', max_length=200)
date = models.DateTimeField('Дата создания пользователя', auto_now=True)
def __str__(self):

11
SusMarketBackend/urls.py Normal file
View File

@@ -0,0 +1,11 @@
from django.urls import path
from . import views
urlpatterns = [
path('get/category', views.category, name='category'),
path('get/products', views.products, name='products'),
path('get/reviews/<int:product>', views.reviews, name='reviews'),
path('post/user/<str:login>/<str:password>', views.register_user, name='register-user'),
path('post/check/user/<str:login>', views.check_user, name='check-user'),
path('get/user/<str:login>/<str:password>', views.user, name='get-user')
]

View File

@@ -1,5 +1,40 @@
import hashlib
from django.http import JsonResponse, HttpRequest, HttpResponse
from django.shortcuts import render
from SusMarketBackend.models import Category, Product, Review, User
def index(request):
return render(request, 'index.html')
# Create your views here.
def category(request: HttpRequest):
categoryObj = {"categories": list(Category.objects.all().values())}
return JsonResponse(categoryObj)
def products(request: HttpRequest):
productObj = {"products": list(Product.objects.all().values())}
return JsonResponse(productObj)
def reviews(request: HttpRequest, product: int):
reviewObj = {"review": list(Review.objects.filter(product_id=product).values())}
return JsonResponse(reviewObj)
def register_user(request: HttpRequest, login: str, password: str):
User.objects.create(login=login, password=hashlib.md5(password).hexdigest())
return HttpResponse('{error: "Null"}')
def check_user(request: HttpRequest, login: str):
checkObj = {"status": True if User.objects.filter(login=login).first() is None else False}
return JsonResponse(checkObj)
def user(request: HttpRequest, login: str, password: str):
userObj = {"user": User.objects.filter(login=login, password=hashlib.md5(password).hexdigest()).first()}
return JsonResponse(userObj)