views.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from django.contrib.auth.mixins import LoginRequiredMixin
  2. from django.contrib.auth.views import LoginView, LogoutView
  3. from django.shortcuts import render, redirect
  4. from django.urls import reverse_lazy
  5. from django.views.generic import CreateView, ListView, DetailView
  6. from .forms import Register
  7. from .models import *
  8. def index(request):
  9. products = Product.objects.order_by("-release_date")[:5]
  10. context = {"products": products}
  11. return render(request, "home.html", context)
  12. class RegisterView(CreateView):
  13. template_name = 'user/register.html'
  14. form_class = Register
  15. success_url = reverse_lazy('index')
  16. class LoginView(LoginView):
  17. template_name = 'user/login.html'
  18. success_url = reverse_lazy('index')
  19. class LogoutView(LoginRequiredMixin, LogoutView):
  20. template_name = 'user/logout.html'
  21. class PostView(ListView):
  22. model = Product
  23. template_name = 'home.html'
  24. context_object_name = 'products'
  25. def get_queryset(self):
  26. return Product.objects.order_by('-release_date')[:5]
  27. class ProfileListView(LoginRequiredMixin, ListView):
  28. model = Basket
  29. context_object_name = 'baskets'
  30. template_name = 'user/profile.html'
  31. def basket_add(request, product_id):
  32. product = Product.objects.get(id=product_id)
  33. baskets = Basket.objects.filter(user=request.user, product=product)
  34. if not baskets.exists():
  35. Basket.objects.create(user=request.user, product=product, countProduct=1)
  36. return redirect('profile')
  37. else:
  38. basket = baskets.first()
  39. basket.countProduct += 1
  40. basket.save()
  41. return redirect('profile')
  42. class ProductsAll(ListView):
  43. model = Product
  44. template_name = 'Products.html'
  45. context_object_name = 'products'
  46. def get_queryset(self):
  47. return Product.objects.order_by('-release_date')
  48. class ProductDetail(DetailView):
  49. model = Product
  50. template_name = 'product_detail.html'