UnversityEducation_Web_Django
198 строк · 5.4 Кб
1from django.http import HttpResponse, HttpResponseNotFound, Http404, HttpResponseRedirect, JsonResponse2from django.shortcuts import render, redirect, get_object_or_4043from django.views import View4from django.contrib.auth.forms import UserCreationForm5from django.contrib.auth import login as dj_login6from django.contrib.auth import authenticate7from django.urls import reverse_lazy8from .models import *9import datetime10from django.core.exceptions import ObjectDoesNotExist11from .forms import RegisterUserForm12
13import random as rd14import os15
16menu = [{17'title': "О сайте",18'url_name': 'about'19}, {20'title': "Обратная связь",21'url_name': 'feedback'22}, {23'title': "Добавить продукт",24'url_name': 'add_page'25}]26
27
28def home(request):29products = list(Product.objects.all())30count_of_items = 431items = []32for i in range(count_of_items):33items += [products[i]]34context = {35'menu': menu,36'title': 'Главная страница',37'items': items,38'request': request39}40return render(request, 'index.html', context=context)41
42
43def about(request):44return render(request, 'about.html', {45'menu': menu,46'title': 'О сайте',47'request': request48})49
50
51def login(request):52return render(request, 'registration/login.html', {53'menu': menu,54'title': 'Войти',55'request': request56})57
58
59def addpage(request):60return render(request, 'addpage.html', {61'menu': menu,62'title': 'Добавить продукт',63'request': request64})65
66
67# def register(request):
68# return render(request, 'register.html', {'menu': menu,
69# 'request': request})
70
71
72def feedback(request):73return render(request, 'feedback.html', {74'menu': menu,75'title': 'Обратная связь',76'request': request77})78
79
80def post(request):81posts = product.objects.all()82return render(request, 'post.html', {83'menu': menu,84'posts': posts,85'request': request86})87
88
89def show_post(request, post_id):90post = get_object_or_404(Product, pk=post_id)91context = {92'menu': menu,93'post': post,94'title': post.title,95'request': request96}97return render(request, 'post.html', context=context)98
99
100def user_page(request):101return render(request, 'user_page.html', {102'menu': menu,103'title': 'Ваша страница',104'request': request105})106
107
108def card(request):109user = request.user110orders = Orders.objects.filter(user=user)111products = list(map(lambda x: x.product, orders))112counts = {products[i]: orders[i].count for i in range(len(products))}113return render(114request, 'card.html', {115'menu': menu,116'items': products,117'counts': counts,118'title': 'Ваша корзина',119'request': request120})121
122
123def del_from_card(request, post_id):124if request.method == 'POST':125user = request.user126product = Product.objects.get(id=post_id)127current_count = product.count128current_ship = product.ship_date129try:130card = Orders.objects.get(user=user, product=product)131Orders.objects.filter(user=user, product=product).delete()132product.count += card.count133product.save()134except ObjectDoesNotExist:135pass136
137data = {'count': current_count,138'can delete': False139}140
141return JsonResponse(data, safe=False)142
143return HttpResponseRedirect(reverse('card'))144
145
146def add_to_card(request, post_id):147if request.method == 'POST':148user = request.user149product = Product.objects.get(id=post_id)150current_count = product.count151current_ship = product.ship_date152if current_count:153try:154card = Orders.objects.get(user=user, product=product)155print(card)156current_count -= 1157card.count += 1158card.save()159except ObjectDoesNotExist:160current_count -= 1161Orders(user=user,162product=product,163ship_date=current_ship,164count=1).save()165product.count -= 1166product.save()167
168data = {'count': current_count,169'can delete': True}170
171return JsonResponse(data, safe=False)172
173return HttpResponseRedirect(reverse('post', args=[post_id]))174
175
176class Register_user(View):177form_class = RegisterUserForm()178template_name = 'registration/register.html'179
180def get(self, request):181context = {'form': self.form_class, 'menu': menu, 'request': request}182return render(request, self.template_name, context)183
184def post(self, request):185form_class = RegisterUserForm(request.POST)186
187print(form_class)188
189if form_class.is_valid():190form_class.save()191username = form_class.cleaned_data.get('username')192password = form_class.cleaned_data.get('password1')193user = authenticate(username=username, password=password)194dj_login(request, user)195return redirect('login')196
197context = {'form': form_class, 'menu': menu, 'request': request}198return render(request, self.template_name, context)199