Skip to content

Commit efc0ae1

Browse files
committed
Otimizando as views transformando-as em classes como o metodo ListView
1 parent feb1456 commit efc0ae1

File tree

3 files changed

+37
-16
lines changed

3 files changed

+37
-16
lines changed

catalog/views.py

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,39 @@
1-
from django.shortcuts import render
1+
from django.shortcuts import render, get_object_or_404
2+
from django.views import generic
23

34
from .models import Product, Category
45

5-
def product_list(request):
6-
context = {
7-
'product_list': Product.objects.all()
8-
}
9-
return render(request, 'catalog/product_list.html',context)
6+
class ProductListView(generic.ListView):
107

11-
def category(request, slug):
12-
category = Category.objects.get(slug = slug)
13-
context = {
14-
'current_category': category,
15-
'product_list': Product.objects.filter(category = category),
16-
}
17-
return render(request, 'catalog/category.html',context)
8+
model = Product
9+
template_name = 'catalog/product_list.html'
10+
11+
product_list = ProductListView.as_view()
12+
13+
14+
class CategoryListView(generic.ListView):
15+
16+
template_name = 'catalog/category.html'
17+
context_object_name = 'product_list'
18+
19+
def get_queryset(self):
20+
return Product.objects.filter(category__slug = self.kwargs['slug'])
21+
22+
def get_context_data(self, **kwargs):
23+
context = super(CategoryListView, self).get_context_data(**kwargs)
24+
context['current_category'] = get_object_or_404(Category, slug = self.kwargs['slug'])
25+
return context
26+
27+
category = CategoryListView.as_view()
28+
29+
#-------------------------------------------------Maneira tradicional
30+
# def category(request, slug):
31+
# category = Category.objects.get(slug = slug)
32+
# context = {
33+
# 'current_category': category,
34+
# 'product_list': Product.objects.filter(category = category),
35+
# }
36+
# return render(request, 'catalog/category.html',context)
1837

1938

2039
def product(request, slug):
165 Bytes
Binary file not shown.

core/views.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
from django.http import HttpResponse
55
from django.core.mail import send_mail
66
from django.conf import settings
7+
from django.views.generic import View,TemplateView
78

89
from .forms import ContactForm
910

11+
class IndexView(TemplateView):
1012

11-
def index(request):
12-
return render(request, 'index.html')
13-
13+
template_name = 'index.html'
14+
15+
index = IndexView.as_view()
1416

1517
def contact(request):
1618
success = False

0 commit comments

Comments
 (0)