一.models.py
from django.db import modelsclass cliente(models.Model): nombre = models.CharField(max_length=200) apellidos = models.CharField(max_length=200) status = models.BooleanField(default=True) def __unicode__(self): nombreCompleto = "%s %s"%(self.nombre,self.apellidos) return nombreCompletoclass categoriaProducto(models.Model): nombre = models.CharField(max_length=200) descripcion = models.TextField(max_length=400) def __unicode__(self): return self.nombreclass producto(models.Model): def url(self,filename): ruta = "MultimediaData/Producto/%s/%s"%(self.nombre,str(filename)) return ruta nombre = models.CharField(max_length=100) descripcion = models.TextField(max_length=300) status = models.BooleanField(default=True) imagen = models.ImageField(upload_to=url,null=True,blank=True) precio = models.DecimalField(max_digits=6,decimal_places=2) stock = models.IntegerField() categorias = models.ManyToManyField(categoriaProducto,null=True,blank=True) def __unicode__(self): return self.nombre
二.admin.py
from django.contrib import adminfrom demo.apps.ventas.models import cliente,producto,categoriaProductoadmin.site.register(cliente)admin.site.register(producto)admin.site.register(categoriaProducto)
三.views.py
from django.shortcuts import render_to_responsefrom django.template import RequestContextfrom demo.apps.ventas.models import productofrom demo.apps.home.forms import ContactForm, LoginFormfrom django.core.mail import EmailMultiAlternatives # Enviamos HTMLfrom django.contrib.auth import login,logout,authenticatefrom django.http import HttpResponseRedirect# Paginacion en Djangofrom django.core.paginator import Paginator,EmptyPage,InvalidPagedef index_view(request): return render_to_response('home/index.html',context_instance=RequestContext(request))def about_view(request): mensaje = "Esto es un mensaje desde mi vista" ctx = {'msg':mensaje} return render_to_response('home/about.html',ctx,context_instance=RequestContext(request))def productos_view(request,pagina): lista_prod = producto.objects.filter(status=True) # Select * from ventas_productos where status = True paginator = Paginator(lista_prod,5) # Cuantos productos quieres por pagina? = 3 try: page = int(pagina) except: page = 1 try: productos = paginator.page(page) except (EmptyPage,InvalidPage): productos = paginator.page(paginator.num_pages) ctx = {'productos':productos} return render_to_response('home/productos.html',ctx,context_instance=RequestContext(request))def singleProduct_view(request,id_prod): prod = producto.objects.get(id=id_prod) cats = prod.categorias.all() # Obteniendo las categorias del producto encontrado ctx = {'producto':prod,'categorias':cats} return render_to_response('home/SingleProducto.html',ctx,context_instance=RequestContext(request))def contacto_view(request): info_enviado = False # Definir si se envio la informacion o no se envio email = "" titulo = "" texto = "" if request.method == "POST": formulario = ContactForm(request.POST) if formulario.is_valid(): info_enviado = True email = formulario.cleaned_data['Email'] titulo = formulario.cleaned_data['Titulo'] texto = formulario.cleaned_data['Texto'] # Configuracion enviando mensaje via GMAIL to_admin = 'alexexc2@gmail.com' html_content = "Informacion recibida de [%s] <br><br><br>***Mensaje****<br><br>%s"%(email,texto) msg = EmailMultiAlternatives('Correo de Contacto',html_content,'from@server.com',[to_admin]) msg.attach_alternative(html_content,'text/html') # Definimos el contenido como HTML msg.send() # Enviamos en correo else: formulario = ContactForm() ctx = {'form':formulario,'email':email,'titulo':titulo,'texto':texto,'info_enviado':info_enviado} return render_to_response('home/contacto.html',ctx,context_instance=RequestContext(request))def login_view(request): mensaje = "" if request.user.is_authenticated(): return HttpResponseRedirect('/') else: if request.method == "POST": form = LoginForm(request.POST) if form.is_valid(): username = form.cleaned_data['username'] password = form.cleaned_data['password'] usuario = authenticate(username=username,password=password) if usuario is not None and usuario.is_active: login(request,usuario) return HttpResponseRedirect('/') else: mensaje = "usuario y/o password incorrecto" form = LoginForm() ctx = {'form':form,'mensaje':mensaje} return render_to_response('home/login.html',ctx,context_instance=RequestContext(request))def logout_view(request): logout(request) return HttpResponseRedirect('/')
四.SingleProducto.html
{% extends 'base.html' %}{% block title %} Producto {{producto.nombre}} {% endblock %}{%block content %}<h1> {{ producto.nombre }}</h1><br><img src="/media/{{ producto.imagen }}" width="150px" heigth="150px"/><p> {{ producto.descripcion }}</p><p> ${{ producto.precio }}</p><p> Cantidad en Existencia: {{ producto.stock }} Unidades </p><br><h5> Categorias:</h5>{% for cat in categorias %}<span class="label label-info"> {{cat.nombre}}</span>{% endfor %}<br><br>{% if producto.stock > 0 %} <a class="btn btn-primary" href="#"> Comprar Producto </a>{% endif %}<a class="btn btn-primary" href="javascript:window.history.go(-1);"> Regresar a la Lista </a>{% endblock %}