Documentação Oficial do Django Link
Vídeo Tutorial Link
myapp/models.py
from django.db import models
# Create your models here.
class Product(models.Model):
name = models.CharField(max_length=100)
price = models.DecimalField(max_digits=8, decimal_places=2)
description = models.TextField()
def __str__(self):
return self.namemyapp/admin.py
from django.contrib import admin
from myapp.models import Product
# Register your models here.
admin.site.register(Product)Rodar
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser # para criar um usuario administrador para acessar django adminVamos criar nossa view para listar os produtos.
from django.core.paginator import Paginator
from django.shortcuts import render
from myapp.models import Product
def product_list(request):
product_list = Product.objects.all()
paginator = Paginator(product_list, 3) # mostra 3 produtos por pagina
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
return render(request, 'index.html', {'page_obj': page_obj})myapp/urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('', views.product_list, name='product-list'),
]Criar um template para listar os produtos que cadastramos. myapp/templates/list.html
{% extends 'base.html' %}
{% block title %}index 1{% endblock %}
{% block content %}
<h1>Produtos</h1>
<div class="container">
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Nome</th>
<th scope="col">Preço</th>
<th scope="col">Descrição</th>
</tr>
</thead>
<tbody>
{% for product in page_obj %}
<tr>
<th scope="row">{{ product.id }}</th>
<th scope="row">{{ product.name|upper }}</th>
<th scope="row">{{ product.price }}</th>
<th scope="row">{{ product.description }}</th>
</tr>
{% endfor %}
</tbody>
</table>
{% include 'pagination.html' %}
</div>
{% endblock %}myapp/templates/pagination.html
{% if page_obj.has_other_pages %}
<div class="btn-group" role="group" aria-label="Item pagination">
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}" class="btn btn-outline-primary">«</a>
{% endif %}
{% for page_number in page_obj.paginator.page_range %}
{% if page_obj.number == page_number %}
<button class="btn btn-outline-primary active">
<span>{{ page_number }} <span class="sr-only">(Atual)</span></span>
</button>
{% else %}
<a href="?page={{ page_number }}" class="btn btn-outline-primary">
{{ page_number }}
</a>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}" class="btn btn-outline-primary">»</a>
{% endif %}
</div>
{% endif %}