十二 Django 1.5.4 外键操作

来源:互联网 发布:spps怎么实现数据筛选 编辑:程序博客网 时间:2024/04/27 02:36

一.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 %}





原创粉丝点击