mirror of
https://github.com/yawaflua/SusMarket.git
synced 2025-12-08 19:49:36 +02:00
Добавил апи
This commit is contained in:
@@ -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"))
|
||||
]
|
||||
|
||||
74
SusMarketBackend/migrations/0001_initial.py
Normal file
74
SusMarketBackend/migrations/0001_initial.py
Normal 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': 'Отзывы',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -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
11
SusMarketBackend/urls.py
Normal 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')
|
||||
]
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user