Aula 07 – Loja Virtual – Ecommerce – Django – Produto toticavalcantiAula 07 – Loja Virtual – Ecommerce – Django – ProdutoLoja Virtual – Ecommerce – Django – Componente ProdutoNo django, um app é um componente de software.Componente ProdutoVoltar para página principal do blogTodas as aulas desse cursoAula 06 Aula 08Para baixar o código como está até agora, acesse o link abaixo: https://github.com/toticavalcanti/django_ecommerce/tree/create_app_product/e_commerceCurta a página do Código Fluente no Facebook https://www.facebook.com/Codigofluente-338485370069035/Vou deixar meu link de referidos na digitalocean pra vocês.Quem se cadastrar por esse link, ganha $100.00 dólares de crédito na digitalocean:Digital OceanEsse outro link é da one.com:One.comComponente ProdutoAgora vamos ver tudo o que precisamos para lidar com os produtos: armazenar os dados a respeito dos produtos no banco, mostrar os produtos em uma lista ou individualmente, permitir o upload de imagens referentes ao produto, etc.Iremos desenvolver o componente Product.Componente de software no django é chamado de App, portanto, iremos criar o app product.O django é uma aplicação web composta por várias outras aplicações (app), ou seja, por vários componentes de software.Quando desenvolvemos a nossa aplicação, fazemos o mesmo, utilizamos vários componentes de software já prontos.Um app, isto é, um componente, deve ser bem específico, deve ser especialista em fazer algo muito bem e de forma eficiente.Quando criamos uma aplicação django, no settings.py da nossa aplicação, em INSTALLED_APPS, por padrão, o django já põe na aplicação criada, várias outras aplicações do próprio django.Por exemplo, django.contrib.auth é um app do django, responsável por nos ajudar na parte de autenticação, ela já vem pronta, e a especialidade dessa dela é fazer de forma eficiente e segura toda a parte de autenticação do usuário, login, logout, etc.Para criar nosso componente Produto, usaremos:python manage.py startapp productsCRUDVamos falar rapidamente sobre CRUD (Create, Retrieve, Update, Delete).CRUD são as ações dentro do banco de dados:Create tá relacionado com o método http POSTRetrieve / List / search tá relacionado com o método http GETUpdate tá relacionado com o método http PUT / PATCHDelete tá relacionado com o método http DELETEModelo ProductAgora criaremos o modelo Product, um model conecta o django ao banco de dados.Cada modelo é uma classe Python que herda de django.db.models.Model.Cada atributo de um modelo representa um campo no banco de dados.Para saber mais detalhes sobre campos dos modelos acesse a documentação oficial:https://docs.djangoproject.com/en/2.1/ref/models/fields/Em src/products/models.py coloque: from django.db import models # Create your models here. class Product(models.Model): #product_category title = models.CharField(max_length=120) description = models.TextField() price = models.DecimalField(decimal_places=2, max_digits=20, default=100.00) No src/e_commerce/settings.py insira o app product em INSTALLED_APPS. """ Django settings for ecommerce project. Generated by 'django-admin startproject' using Django 2.1.3. For more information on this file, see https://docs.djangoproject.com/en/2.1/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/2.1/ref/settings/ """ import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = '59dax*+7ca^y4u_ivn&bpeim_*e(y07%ywl_niaz4-fq8utd!-' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', #our apps 'products' ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'ecommerce.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'ecommerce.wsgi.application' # Database # https://docs.djangoproject.com/en/2.1/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } # Password validation # https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] # Internationalization # https://docs.djangoproject.com/en/2.1/topics/i18n/ LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.1/howto/static-files/ STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static_my_project"), ] STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn", "static_root") MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn", "media_root") Em src/products/admin.py coloque o seguinte conteúdo:from django.contrib import admin from .models import Product admin.site.register(Product)Levante o servidor local com:python manage.py runserverAcesse:127.0.0.1:8000/admin/Veja que em Site administration tem uma nova seção chamada Products.Se você clicar nela, poderá adicionar produtos.Vamos adicionar o produto camiseta:Title: CamisetaDescription: Essa camiseta é uma edição limitada, é exclusiva e apenas algumas unidades estão disponíveis.Price: 127.00Vamos adicionar outro produto, tênis:Title: TênisDescription: Esse tênis possui uma tecnologia inovadora que garantem conforto e alto desempenho esportivo.Price: 325.00Pelo painel administrativo você consegue fazer as operações de CRUD, com o componente Product.Veja que os produtos são mostrados como Product object no painel administrativo.Modifique src/products/models.py para que fique assim: from django.db import models # Create your models here. class Product(models.Model): #product_category title = models.CharField(max_length=120) description = models.TextField() price = models.DecimalField(decimal_places=2, max_digits=20, default=100.00) #python 3 def __str__(self): return self.title #python 2 def __unicode__(self): return self.title Derrube o servidor com ctrl + cRode as migrações pra repercutir as alterações do modelo no banco de dados:python manage.py makemigrations python manage.py migrateSuba novamente o servidor:python manage.py runserverDê um refresh na página de admin, e veja que ao invés de Product object, agora aparece o title de cada produto, resultado da saída da função __str__ no caso do python3 ou __unicode__ no python 2.A página de administração é uma página fechada, apenas para um pequeno time que trabalha para o site, usuários com permissões de cadastrar novos produtos no sistema, etc.Se você tem um time acima de 50 pessoas, você provavelmente não irá utilizar a página de admin da sua loja para todas essas pessoa, você provavelmente vai querer construir uma página administrativa mais específica para esse time.Não se preocupe com isso por enquanto, basta ter isso em mente quando você seguir em frente nos estudos e projetos que desenvolver.Na próxima aula, iremos construir uma forma para que os usuários que visitam o site, usuários comuns, consigam ver os produtos da loja.Aula 06 Aula 08Todas as aulas desse cursoVoltar para página principal do blogCurta a página do Código Fluente no Facebook https://www.facebook.com/Codigofluente-338485370069035/Vou deixar meu link de referidos na digitalocean pra vocês.Quem se cadastrar por esse link, ganha $100.00 dólares de crédito na digitalocean:Digital OceanEsse outro link é da one.com:One.comPara baixar o código como está até agora, acesse o link abaixo: https://github.com/toticavalcanti/django_ecommerce/tree/create_app_product/e_commerceObrigado, até a próxima e bons estudos. 😉 Category: Django, Loja virtual - Ecommerce, Programação Web