UnversityEducation_Web_Django

Форк
0
198 строк · 5.4 Кб
1
from django.http import HttpResponse, HttpResponseNotFound, Http404, HttpResponseRedirect, JsonResponse
2
from django.shortcuts import render, redirect, get_object_or_404
3
from django.views import View
4
from django.contrib.auth.forms import UserCreationForm
5
from django.contrib.auth import login as dj_login
6
from django.contrib.auth import authenticate
7
from django.urls import reverse_lazy
8
from .models import *
9
import datetime
10
from django.core.exceptions import ObjectDoesNotExist
11
from .forms import RegisterUserForm
12

13
import random as rd
14
import os
15

16
menu = [{
17
    'title': "О сайте",
18
    'url_name': 'about'
19
}, {
20
    'title': "Обратная связь",
21
    'url_name': 'feedback'
22
}, {
23
    'title': "Добавить продукт",
24
    'url_name': 'add_page'
25
}]
26

27

28
def home(request):
29
    products = list(Product.objects.all())
30
    count_of_items = 4
31
    items = []
32
    for i in range(count_of_items):
33
        items += [products[i]]
34
    context = {
35
        'menu': menu,
36
        'title': 'Главная страница',
37
        'items': items,
38
        'request': request
39
    }
40
    return render(request, 'index.html', context=context)
41

42

43
def about(request):
44
    return render(request, 'about.html', {
45
        'menu': menu,
46
        'title': 'О сайте',
47
        'request': request
48
    })
49

50

51
def login(request):
52
    return render(request, 'registration/login.html', {
53
        'menu': menu,
54
        'title': 'Войти',
55
        'request': request
56
    })
57

58

59
def addpage(request):
60
    return render(request, 'addpage.html', {
61
        'menu': menu,
62
        'title': 'Добавить продукт',
63
        'request': request
64
    })
65

66

67
# def register(request):
68
#     return render(request, 'register.html', {'menu': menu,
69
#                                             'request': request})
70

71

72
def feedback(request):
73
    return render(request, 'feedback.html', {
74
        'menu': menu,
75
        'title': 'Обратная связь',
76
        'request': request
77
    })
78

79

80
def post(request):
81
    posts = product.objects.all()
82
    return render(request, 'post.html', {
83
        'menu': menu,
84
        'posts': posts,
85
        'request': request
86
    })
87

88

89
def show_post(request, post_id):
90
    post = get_object_or_404(Product, pk=post_id)
91
    context = {
92
        'menu': menu,
93
        'post': post,
94
        'title': post.title,
95
        'request': request
96
    }
97
    return render(request, 'post.html', context=context)
98

99

100
def user_page(request):
101
    return render(request, 'user_page.html', {
102
        'menu': menu,
103
        'title': 'Ваша страница',
104
        'request': request
105
    })
106

107

108
def card(request):
109
    user = request.user
110
    orders = Orders.objects.filter(user=user)
111
    products = list(map(lambda x: x.product, orders))
112
    counts = {products[i]: orders[i].count for i in range(len(products))}
113
    return render(
114
        request, 'card.html', {
115
            'menu': menu,
116
            'items': products,
117
            'counts': counts,
118
            'title': 'Ваша корзина',
119
            'request': request
120
        })
121

122

123
def del_from_card(request, post_id):
124
    if request.method == 'POST':
125
        user = request.user
126
        product = Product.objects.get(id=post_id)
127
        current_count = product.count
128
        current_ship = product.ship_date
129
        try:
130
            card = Orders.objects.get(user=user, product=product)
131
            Orders.objects.filter(user=user, product=product).delete()
132
            product.count += card.count
133
            product.save()
134
        except ObjectDoesNotExist:
135
            pass
136

137
        data = {'count': current_count,
138
                   'can delete': False
139
        }
140
      
141
        return JsonResponse(data, safe=False)
142
      
143
    return HttpResponseRedirect(reverse('card'))
144

145

146
def add_to_card(request, post_id):
147
    if request.method == 'POST':
148
        user = request.user
149
        product = Product.objects.get(id=post_id)
150
        current_count = product.count
151
        current_ship = product.ship_date
152
        if current_count:
153
            try:
154
                card = Orders.objects.get(user=user, product=product)
155
                print(card)
156
                current_count -= 1
157
                card.count += 1
158
                card.save()
159
            except ObjectDoesNotExist:
160
                current_count -= 1
161
                Orders(user=user,
162
                       product=product,
163
                       ship_date=current_ship,
164
                       count=1).save()
165
            product.count -= 1
166
            product.save()
167

168
            data = {'count': current_count,
169
                   'can delete': True}
170

171
            return JsonResponse(data, safe=False)
172

173
    return HttpResponseRedirect(reverse('post', args=[post_id]))
174

175

176
class Register_user(View):
177
    form_class = RegisterUserForm()
178
    template_name = 'registration/register.html'
179

180
    def get(self, request):
181
        context = {'form': self.form_class, 'menu': menu, 'request': request}
182
        return render(request, self.template_name, context)
183

184
    def post(self, request):
185
        form_class = RegisterUserForm(request.POST)
186

187
        print(form_class)
188

189
        if form_class.is_valid():
190
            form_class.save()
191
            username = form_class.cleaned_data.get('username')
192
            password = form_class.cleaned_data.get('password1')
193
            user = authenticate(username=username, password=password)
194
            dj_login(request, user)
195
            return redirect('login')
196

197
        context = {'form': form_class, 'menu': menu, 'request': request}
198
        return render(request, self.template_name, context)
199

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.