views.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from django.contrib.auth.mixins import LoginRequiredMixin
  2. from django.contrib.auth.views import LoginView, LogoutView
  3. from django.shortcuts import redirect
  4. from django.urls import reverse_lazy
  5. from django.views.generic import CreateView, DetailView
  6. from django.views.generic.list import ListView
  7. from .forms import *
  8. from django.db.models import Q
  9. class IndexView(ListView):
  10. model = Product
  11. template_name = 'index.html'
  12. context_object_name = 'products'
  13. def get_queryset(self):
  14. return Product.objects.order_by('-date_create', '-time_create')[:5]
  15. class RegisterView(CreateView):
  16. template_name = 'user/register.html'
  17. form_class = RegisterForm
  18. success_url = reverse_lazy('login')
  19. class LoginView(LoginView):
  20. template_name = 'user/login.html'
  21. success_url = reverse_lazy('index')
  22. class BBLogoutView(LogoutView):
  23. template_name = 'user/logout.html'
  24. class ProfileBasket(LoginRequiredMixin, ListView):
  25. model = Basket
  26. context_object_name = 'baskets'
  27. template_name = 'user/profile.html'
  28. def add_to_basket(request, product_id):
  29. product = Product.objects.get(id = product_id)
  30. baskets = Basket.objects.filter(user=request.user, product=product)
  31. if not baskets.exists():
  32. Basket.objects.create(user=request.user, product=product, count=1)
  33. return redirect('profile')
  34. else:
  35. basket = baskets.first()
  36. basket.count += 1
  37. basket.save()
  38. return redirect('profile')
  39. class ProductsAllView(ListView):
  40. model = Product
  41. template_name = 'all_products.html'
  42. context_object_name = 'products'
  43. def get_queryset(self):
  44. return Product.objects.order_by('-date_create', '-time_create')
  45. class ProductDetail(DetailView):
  46. model = Product
  47. template_name = 'product_detail.html'
  48. class SearchResultsView(ListView):
  49. model = Product
  50. template_name = 'search.html'
  51. def get_queryset(self):
  52. query = self.request.GET.get("q")
  53. object_list = Product.objects.filter(
  54. Q(title__icontains=query)
  55. )
  56. return object_list