SlideShare ist ein Scribd-Unternehmen logo
1 von 65
Downloaden Sie, um offline zu lesen
Arturo Jamaica
miércoles, 4 de septiembre de 13
Arturo Jamaica
DJANGO LA WEB
Mientras hablo Instala:
Linux : sudo apt-get install python easy_install django
Windows : http://www.activestate.com/activepython/downloads
Mac : easy_install django , easy_install django
Curso de Django 1.5 y Python
miércoles, 4 de septiembre de 13
Arturo Jamaica
2
Python y Django Aplicaciones web
miércoles, 4 de septiembre de 13
Arturo Jamaica
BIENVENIDOS
FILOSOFÍA DE
DESARROLLO WEB CON
DJANGO
1. PYTHON EN 20 MINUTOS
2. VISTAS Y PLANTILLAS
3. URLS AMIGABLES CON
EXPRESIONES
REGULARES
4. ESTRUCTURA BÁSICA DE
UNA WEB APP DJANGO
Curso de Django
2
1. BASES DE DATOS Y EL MAPEO
OBJETO-RELACIONAL ORM
2. EL MÁGICO ADMIN DE DJANGO
3. VALIDACIÓN DE FORMULARIOS
4. SISTEMAS DE USUARIOS
Python y Django Aplicaciones web
miércoles, 4 de septiembre de 13
Arturo Jamaica
PYTHON
Python es un lenguaje de programación creado por Guido van
Rossum a principios de los años 90 cuyo nombre está inspirado en el
grupo de cómicos ingleses“Monty Python”.
Es un lenguaje similar a Perl, pero con una sintaxis muy limpia y que
favorece un código legible. Se trata de un lenguaje interpretado o de
script.
Un lenguaje interpretado o de script es aquel que se ejecuta utilizando
un programa intermedio llamado intérprete, en lugar de compilar el
código a lenguaje máquina que pueda comprender y ejecutar
directamente una computadora
3
miércoles, 4 de septiembre de 13
Arturo Jamaica
VENTAJAS
•Legible: Sintaxis intuiva y estricta
•Productivo : Entre 1/3 y 1/5 más rápido que
Java o C++
•Portable : GNU/Linux, Windows, Mac OS X, ...
•Recargado : Standard Library, Third parties
•Integrable : C, C++, Java, .NET, COM, WS,
CORBA, ...
4
miércoles, 4 de septiembre de 13
Arturo Jamaica
COMO LO USO?
5
#!/usr/bin/env python
print "hola mundo!"
$ python holamundo.py
hola mundo!
holamundo.py Consola
$ python
Python 2.6.5 (r265:79063,Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hola mundo!"
hola mundo!
miércoles, 4 de septiembre de 13
Arturo Jamaica
TIPOS DE DATOS
6
•int : 15 float : 14.3 Long : 35L
•bool :True False
•str : “Hola Mundo”
•list : [1, [2, 'three' ], 4 ]
•dict : { 'food' : 'spam' , 'taste': 'yum'}
•tuple : ( 1 , 'spam' , 4 , 'U' )
miércoles, 4 de septiembre de 13
Arturo Jamaica
OPERADORES
7
a + b a - b a * b a / b
a % b -a a ** b
a >= b a == b a != b a > b
Aritméticos
Comparadores
a and b a or b not b
Lógicos
miércoles, 4 de septiembre de 13
Arturo Jamaica
MÓDULOS
8
1. Un módulo es un fichero .py
2. Puede usar paquetes
3. Un paquete es una carpeta
que contiene un fichero con
nombre __init__.py
12
3
miércoles, 4 de septiembre de 13
Arturo Jamaica
EJEMPLO
9
import sound.effects.echo
sound.effects.echo.echofilter(...)
from sound.effects import echo
echo.echofilter(...)
from sound.effects import echo as rev
rev.echofilter(...)
miércoles, 4 de septiembre de 13
Arturo Jamaica
EN PYTHON NO
SE USAN
CORCHETES
PEP 8
10
miércoles, 4 de septiembre de 13
Arturo Jamaica
11
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)
miércoles, 4 de septiembre de 13
Arturo Jamaica
12
Code is read much
more often than it is
written.
miércoles, 4 de septiembre de 13
Arturo Jamaica
class Estudiante(object):
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
def hola(self):
if self.edad > 18 :
return '%s es mayor' % self.nombre
else:
return '%s es menor' % self.nombre
miércoles, 4 de septiembre de 13
Arturo Jamaica
FUNCIONES
14
def my_first_function(p1, p2):
return "Hello World!"
VARIABLES
a = 3
b = int()
c = objeto()
b = c
miércoles, 4 de septiembre de 13
Arturo Jamaica
LISTAS
L = [22,True,“una lista”, [1, 2]]
TUPLAS
T = (22,True,“una tupla”,(1, 2))
d = {“Kill Bill”:“Tarantino”,
“Amélie”:“Jean-Pierre Jeunet”}
DICCIONARIOS
miércoles, 4 de septiembre de 13
Arturo Jamaica
CONVERSIONES
16
>>> int(4.3)
4
>>> str(4.3)
“4.3”
>>> float(4)
4.0
>>> list((4,4,5))
[4,4,5]
miércoles, 4 de septiembre de 13
Arturo Jamaica
COMUNES
17
>>> len(“hey”)
3
>>> range(5)
[0,1,2,3,4,5]
>>> type(4)
< type int >
>>> sum([1,2,4])
7
>>> map(str,[5,2,1])
[‘5’,‘2’,’1’]
>>> sorted([5,2,1])
[1,2,5]
>>> round(6.3243,1)
6.3
>>> dir([5,2,1])
>>> help(sorted)
miércoles, 4 de septiembre de 13
Arturo Jamaica
CLASES
18
class Estudiante(object):
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
def hola(self):
return 'Mi nombre es is %s' % self.nombre
e = Estudiante("Arturo", 21)
miércoles, 4 de septiembre de 13
Arturo Jamaica
MÉTODOS ESPECIALES
__cmp__(self, otro)
Método llamado cuando se
utilizan los operadores de
comparación para
comprobar si nuestro
objeto es menor, mayor o
igual al objeto pasado como
parámetro.
__len__(self)
Método llamado para
comprobar la longitud del
objeto. Se utiliza, por
ejemplo, cuando se llama a
la función len(obj) sobre
nuestro objeto. Como es de
suponer, el método debe
devolver la longitud
del objeto.
19
miércoles, 4 de septiembre de 13
Arturo Jamaica
IF
20
nombre = "Arturo"
if nombre == "Arturo":
nombre = "Arturo Rifa!"
elif nombre == "Freddier":
nombre = "Hola Freddier"
else:
nombre = "Quien eres?"
$nombre = "Arturo";
if ($nombre == "Arturo"){
$nombre = "Arturo Rifa!";
}else if (nombre == "Freddier"){
nombre = "Hola Freddier"
}else{
nombre = "Quien eres?"
}
miércoles, 4 de septiembre de 13
Arturo Jamaica
WHILE
21
contador = 0
while contador < 5:
print "numero %i" % contador
contador +=1
$count = 0;
while ($count < 5) {
echo "Number ".$count;
$count+=1;
}
miércoles, 4 de septiembre de 13
Arturo Jamaica
WHILE
22
for i in range(4):
print "Numero %i" % i
for ($i=0; $i < 5; $i++) {
echo "Numero ".$i;
}
miércoles, 4 de septiembre de 13
Arturo Jamaica
EXCEPCIONES
23
try {
$r = 3 / 0;
} catch (Exception $e) {
echo "Hoyo Negro";
}
try:
r = 3 / 0
except:
print "Division entre 0”
miércoles, 4 de septiembre de 13
Arturo Jamaica
INTERACCIÓN WEB
24
import urllib2
try:
f = urllib2.urlopen("http://congresorest.appspot.com/
diputado/")
print f.read()
f.close()
except HTTPError, e:
print "Error!!"
print e.code
except URLError, e:
print "Error!!"
print e.code
miércoles, 4 de septiembre de 13
Arturo Jamaica
FRAMEWORKS
25
1 2 3HTML CGI PHP JSP ASP Django Rails
miércoles, 4 de septiembre de 13
Arturo Jamaica
FRAMEWORK
26
Web App Framework
MVC
Persistencia
Manejo de
Request
miércoles, 4 de septiembre de 13
Arturo Jamaica
DJANGO
Django es un framework d e desarrollo web de código abierto,
escrito en Python, que cumple en cierta medida el paradigma del
Modelo Vista Controlador.
27
Web
client
Server
Django
Models
ControladoresTemplates
miércoles, 4 de septiembre de 13
Arturo Jamaica
DJANGO
28
manage.py
app
app
settings.py urls.py wsgi.py
django-admin.py startproject app
miércoles, 4 de septiembre de 13
Arturo Jamaica
DJANGO
29
$cd app
$ python manage.py runserver
miércoles, 4 de septiembre de 13
Arturo Jamaica
A DETALLE
30
Web
client
Server
Django
Views.py
URLS.pyTemplates
Models.py
miércoles, 4 de septiembre de 13
Arturo Jamaica
URL Y VISTAS
Las Urls actuan como entrada a las peticiones y estas se resuelven
con expresiones regulares.
Las URLs apuntan a una función en las vistas que definen el
Django comportamiento
31
URL Vista Magic
.html
miércoles, 4 de septiembre de 13
Arturo Jamaica
VIEWS.PY
Cada función de Views recibe como parametro un
HttpRequest y d e v u e lv e n un objeto HttpResponse
32
miércoles, 4 de septiembre de 13
Arturo Jamaica
EJEMPLO
33
http://mejorando.la/index
from django.conf.urls.defaults import *
from mysite.views import index_view
urlpatterns = patterns('',
(r'^index/$', index_view),
)
from django.http import HttpResponse
def index_view(request):
html = "Bienvenido al curso"
return HttpResponse(html)
url.py views.py
miércoles, 4 de septiembre de 13
Arturo Jamaica
EJEMPLO
34
http://mejorando.la/post/4
from django.conf.urls.defaults import *
from mysite.views import index_view
urlpatterns = patterns('',
url(r'^post/(d{1,2})/$', post),
)
from django.http import HttpResponse
from mysite.models import Post
def post(request,id):
html = post.object.get(pk=id).title
return HttpResponse(html)
miércoles, 4 de septiembre de 13
Arturo Jamaica
TEMPLATES
Se basan en dos tipos de objetos: Template() y Context().
• Template() contiene el string de salida que queremos devolver
en el HttpResponse (normalmente HTML)
• Context() contiene un diccionario con los valores que dan
contexto a una plantilla
35
"Bienvenido, {{ user }}."
{'user': 'Freddier'}Context
Template
"Bienvenido, Freddier."
miércoles, 4 de septiembre de 13
Arturo Jamaica
TEMPLATES
36
from django.http import HttpResponse
from django.template.loader import get_template
from django.template import Context
from datetime import datetime
def hora_actual(request):
ahora = datetime.now()
t = get_template('hora.html')
c = Context({'hora': ahora})
html = t.render(c)
return HttpResponse(html)
miércoles, 4 de septiembre de 13
Arturo Jamaica
HOT TRICK
37
from django.shortcuts import render_to_response
from datetime import datetime
def hora_actual(request):
now = datetime.now()
return render_to_response('hora.html', {'hora': now})
miércoles, 4 de septiembre de 13
Arturo Jamaica
TAGS Y FILTROS
38
filter {{ varible|filter }}
inline tag {% tag var1 var2 %}
block tag
{% tag var1 %}
...
{% endtag %}
miércoles, 4 de septiembre de 13
Arturo Jamaica
TAGS
39
{% for elemento in lista %}
<li>{{ elemento }}<li>
{% endfor %}
{% if username == "Juan" %}
Hola Juan
{% else %}
Hola {{ usuario }},
{% endif %}
miércoles, 4 de septiembre de 13
Arturo Jamaica
FILTROS
40
{{ username|length }} {{ username|wordcount }}
{{ username|upper }}
{{ fecha|date:”d MY” }} {{ fecha|timesince }}
{'fecha': datetime.datetime(2011, 9, 11, 17, 1, 59, 385323) }
miércoles, 4 de septiembre de 13
Arturo Jamaica
TAGS
41
{% for elemento in lista %}
<li class="{% cycle 'rojo' 'azul' %}">{{ elemento }}<li>
{% endfor %}
{% include "menu_bar.html" %}
{% for elemento in lista %}
<li >{{ forloop.counter }} - {{ elemento }}<li>
{% endfor %}
miércoles, 4 de septiembre de 13
Arturo Jamaica
MODELOS
42
from django.db import models
class Libro(models.Model):
nombre = models.CharField(blank=True, max_length=100)
creado = models.DateTimeField(blank=False)
disponible = models.BooleanField(default=True)
miércoles, 4 de septiembre de 13
Arturo Jamaica
TIPOS DE DATOS
• BigIntegerField
• BooleanField
• CharField
• CommaSeparatedIntegerField
• DateField
• DateTimeField
• DecimalField
• EmailField
• FileField
• FilePathField
• FloatField
• ImageField
• IntegerField
• NullBooleanField
• PositiveIntegerField
• PositiveSmallIntegerField
• SlugField
• SmallIntegerField
• TextField
• TimeField
• URLField
• XMLField
• ForeingKey
• ManyToManyField
• OneToOneField
43
miércoles, 4 de septiembre de 13
Arturo Jamaica
PROPIEDADES
• null (True|Flase)
• blank (True|False)
• choices (lista)
• default (valor)
• editable (True|False)
• help_text (String)
• unique (True|False)
• primary_key
• unique_for_date
• unique_for_month
• unique_for_year
44
miércoles, 4 de septiembre de 13
Arturo Jamaica
BASES DE DATOS
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'db.sqlite'
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST =
45
miércoles, 4 de septiembre de 13
Arturo Jamaica
EJECUTAR
46
$ python manage.py syncdb
miércoles, 4 de septiembre de 13
Arturo Jamaica
ORM
47
books = Book.objects.all()
books = Book.objects.all()[:100]
books = Book.objects.all()[100:]
book = Book(nombre =‘Art of war’)
book.save()
Query
Insert
miércoles, 4 de septiembre de 13
Arturo Jamaica
ORM
48
Update
Update
Book.Objects.all().update( disponible= False)
book.id
book.disponible = False
book.save()
miércoles, 4 de septiembre de 13
Arturo Jamaica
ORM
49
Delete
Update
Book.Objects.all().delte()
book.id
book.delete()
miércoles, 4 de septiembre de 13
Arturo Jamaica
ORM
50
Get
Book.Objects.get(id=’36’)
Book.Objects.get(nombre=‘Art of war’)
Filtros
Book.Objects.filter(disponible=True)
Book.Objects.exclude(disponible=True)
miércoles, 4 de septiembre de 13
Arturo Jamaica
FILTROS
campo__lt=0
campo__lte=0
campo__in=[ ,]
campo__month=12
campo__startswith=''
campo__istartswith=''
campo__endswith=''
campo__iendswith=''
campo__range=( ,)
campo__year=2010
campo__exact=''
campo__iexact=''
campo__contains=''
campo__icontains=''
campo__isnull=T|F
campo__day=31
campo__gt=0
campo__gte=0
51
miércoles, 4 de septiembre de 13
Arturo Jamaica
RELACIONES
52
OneToOneField
class Libro(models.Model):
autor = OneToOneField(Autor)
class Autor(models.Model):
...
>> l.autor
<Autor:Autor object>
>> a.libro
<Libro: Libro object>
miércoles, 4 de septiembre de 13
Arturo Jamaica
RELACIONES
53
ForeignKeyField
class Blog(models.Model):
...
class Post(models.Model):
blog = ForeignKey(Blog)
>>b.post_set.all()
[<Post: Post object>,...]
>> p.blog
<Blog: Blog object>
miércoles, 4 de septiembre de 13
Arturo Jamaica
RELACIONES
54
ManyToMany
class Post(models.Model):
tags = ManyToMany(Tags)
classTags(models.Model):
>>p.tags.all()
[<Tags:Tags object>,...]
>>t.post_set.all()
[<Post: Post object>,...]
tags = ManyToMany(Tags, related_name='tags')
miércoles, 4 de septiembre de 13
Arturo Jamaica
ADMIN
55
1. Quitar los comentarios en las url
2. Instalar 'django.contrib.admin'
3. Registrar modelos con (en admin.py)
admin.site.register
from django.contrib import admin
miércoles, 4 de septiembre de 13
Arturo Jamaica
FORMAS
56
Las Formas son objetos que nos permiten
manejardatos ingresados por los usuarios.
En Django el framework se encarga de Pintar a
HTML,Validar y guardar los datos ingresados
Esta basado en la idea de los modelos
miércoles, 4 de septiembre de 13
Arturo Jamaica
FORMAS
57
from django import forms
class ContactoForm(forms.Form):
titulo = forms.CharField(max_length=100, label='Titulo')
mail = forms.EmailField(required=False)
mensaje = forms.CharField(widget= forms.Textarea)
miércoles, 4 de septiembre de 13
Arturo Jamaica
FORMAS EN TEMPLATES
58
<html> <body>
<h1>Título</h1>
{% if form.errors %}
<p style="color: red;">
{{ form.errors|pluralize }}.
</p>
{% endif %}
<form action="" method="post"> <table>
{{ form.as_table }}
</table>
<input type="submit" value="Submit"> </form>
</body> </html>
miércoles, 4 de septiembre de 13
Arturo Jamaica
FORMS EN VIEWS
59
from django.shortcuts import render_to_response
from site.app.forms import ContactoForm
def contact(request):
if request.method == 'POST':
form = ContactoForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
send_mail(cd['subject'], cd['message'],)
return HttpResponseRedirect('/contacto/enviado/')
else:
form = ContactoForm()
return render_to_response('contact_form.html', {'form': form})
miércoles, 4 de septiembre de 13
Arturo Jamaica
TIPOS DE DATO
BooleanField
CharField
ChoiceField
TypedChoiceField
DateField
DateTimeField
DecimalField
EmailField
FileField
FilePathField
FloatField
ImageField
IPAddressField
MultipleChoiceField
NullBooleanField
RegexField
SlugField
TimeField
URLField
ComboField
MultiValuefield
SplitDateTimeField
ModelChoiceField
ModelMultipleChoiceField
60
miércoles, 4 de septiembre de 13
Arturo Jamaica
MODELFORMS
61
from django.db import models
class Libro(models.Model):
nombre = models.CharField(blank=True, max_length=100)
creado = models.DateTimeField(blank=False)
disponible = models.BooleanField(default=True)
from django import forms
from books.models import Libro
class LibroForm(forms.ModelForm):
class Libro:
model = Libro
exclude = ('nombre',)
miércoles, 4 de septiembre de 13
Arturo Jamaica
miércoles, 4 de septiembre de 13
Arturo Jamaica
GRACIAS!Curso Python y Django
Arturo Jamaica
me@arturojamaica.com
miércoles, 4 de septiembre de 13

Weitere ähnliche Inhalte

Ähnlich wie Django

Desarrollo web ágil con Python y Django
Desarrollo web ágil con Python y DjangoDesarrollo web ágil con Python y Django
Desarrollo web ágil con Python y DjangoJaime Irurzun
 
Asegúr@IT II - Seguridad en Web
Asegúr@IT II - Seguridad en WebAsegúr@IT II - Seguridad en Web
Asegúr@IT II - Seguridad en WebChema Alonso
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a DjangoJoaquim Rocha
 
CIB_M03_Hacking_Phyton_CPs_ vs1.pdf
CIB_M03_Hacking_Phyton_CPs_      vs1.pdfCIB_M03_Hacking_Phyton_CPs_      vs1.pdf
CIB_M03_Hacking_Phyton_CPs_ vs1.pdffito60
 
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones webGroovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones webParadigma Digital
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsFátima Casaú Pérez
 
Novedades en Symfony 2.3
Novedades en Symfony 2.3Novedades en Symfony 2.3
Novedades en Symfony 2.3Javier López
 
Tdd y clean code SG campus
Tdd y clean code SG campusTdd y clean code SG campus
Tdd y clean code SG campusSoftware Guru
 
Original Hacker 5
Original Hacker 5Original Hacker 5
Original Hacker 5Huehue 1
 
la estruturas de la programacion basicas de las POO
la estruturas de la programacion basicas de las POOla estruturas de la programacion basicas de las POO
la estruturas de la programacion basicas de las POOAmado Arcaya
 
Algoritmos - Funciones C++
Algoritmos - Funciones C++ Algoritmos - Funciones C++
Algoritmos - Funciones C++ Ronal Palomino
 
Pycon es 17 noviembre 2014
Pycon es 17 noviembre 2014Pycon es 17 noviembre 2014
Pycon es 17 noviembre 2014Sergio Soto
 

Ähnlich wie Django (20)

Django
DjangoDjango
Django
 
Desarrollo web ágil con Python y Django
Desarrollo web ágil con Python y DjangoDesarrollo web ágil con Python y Django
Desarrollo web ágil con Python y Django
 
Taller II Coreis Python 13112009
Taller II Coreis Python 13112009Taller II Coreis Python 13112009
Taller II Coreis Python 13112009
 
Asegúr@IT II - Seguridad en Web
Asegúr@IT II - Seguridad en WebAsegúr@IT II - Seguridad en Web
Asegúr@IT II - Seguridad en Web
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Personalizar gui guia_3
Personalizar gui guia_3Personalizar gui guia_3
Personalizar gui guia_3
 
CIB_M03_Hacking_Phyton_CPs_ vs1.pdf
CIB_M03_Hacking_Phyton_CPs_      vs1.pdfCIB_M03_Hacking_Phyton_CPs_      vs1.pdf
CIB_M03_Hacking_Phyton_CPs_ vs1.pdf
 
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones webGroovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
 
curso_programacion_python3.pdf
curso_programacion_python3.pdfcurso_programacion_python3.pdf
curso_programacion_python3.pdf
 
REPLs
REPLsREPLs
REPLs
 
Novedades en Symfony 2.3
Novedades en Symfony 2.3Novedades en Symfony 2.3
Novedades en Symfony 2.3
 
Tdd y clean code SG campus
Tdd y clean code SG campusTdd y clean code SG campus
Tdd y clean code SG campus
 
Comando de red
Comando de redComando de red
Comando de red
 
PHP's FIG and PSRs
PHP's FIG and PSRsPHP's FIG and PSRs
PHP's FIG and PSRs
 
Programas en netbeans
Programas en netbeansProgramas en netbeans
Programas en netbeans
 
Original Hacker 5
Original Hacker 5Original Hacker 5
Original Hacker 5
 
la estruturas de la programacion basicas de las POO
la estruturas de la programacion basicas de las POOla estruturas de la programacion basicas de las POO
la estruturas de la programacion basicas de las POO
 
Algoritmos - Funciones C++
Algoritmos - Funciones C++ Algoritmos - Funciones C++
Algoritmos - Funciones C++
 
Pycon es 17 noviembre 2014
Pycon es 17 noviembre 2014Pycon es 17 noviembre 2014
Pycon es 17 noviembre 2014
 

Kürzlich hochgeladen

Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 

Kürzlich hochgeladen (20)

Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 

Django

  • 1. Arturo Jamaica miércoles, 4 de septiembre de 13
  • 2. Arturo Jamaica DJANGO LA WEB Mientras hablo Instala: Linux : sudo apt-get install python easy_install django Windows : http://www.activestate.com/activepython/downloads Mac : easy_install django , easy_install django Curso de Django 1.5 y Python miércoles, 4 de septiembre de 13
  • 3. Arturo Jamaica 2 Python y Django Aplicaciones web miércoles, 4 de septiembre de 13
  • 4. Arturo Jamaica BIENVENIDOS FILOSOFÍA DE DESARROLLO WEB CON DJANGO 1. PYTHON EN 20 MINUTOS 2. VISTAS Y PLANTILLAS 3. URLS AMIGABLES CON EXPRESIONES REGULARES 4. ESTRUCTURA BÁSICA DE UNA WEB APP DJANGO Curso de Django 2 1. BASES DE DATOS Y EL MAPEO OBJETO-RELACIONAL ORM 2. EL MÁGICO ADMIN DE DJANGO 3. VALIDACIÓN DE FORMULARIOS 4. SISTEMAS DE USUARIOS Python y Django Aplicaciones web miércoles, 4 de septiembre de 13
  • 5. Arturo Jamaica PYTHON Python es un lenguaje de programación creado por Guido van Rossum a principios de los años 90 cuyo nombre está inspirado en el grupo de cómicos ingleses“Monty Python”. Es un lenguaje similar a Perl, pero con una sintaxis muy limpia y que favorece un código legible. Se trata de un lenguaje interpretado o de script. Un lenguaje interpretado o de script es aquel que se ejecuta utilizando un programa intermedio llamado intérprete, en lugar de compilar el código a lenguaje máquina que pueda comprender y ejecutar directamente una computadora 3 miércoles, 4 de septiembre de 13
  • 6. Arturo Jamaica VENTAJAS •Legible: Sintaxis intuiva y estricta •Productivo : Entre 1/3 y 1/5 más rápido que Java o C++ •Portable : GNU/Linux, Windows, Mac OS X, ... •Recargado : Standard Library, Third parties •Integrable : C, C++, Java, .NET, COM, WS, CORBA, ... 4 miércoles, 4 de septiembre de 13
  • 7. Arturo Jamaica COMO LO USO? 5 #!/usr/bin/env python print "hola mundo!" $ python holamundo.py hola mundo! holamundo.py Consola $ python Python 2.6.5 (r265:79063,Apr 16 2010, 13:09:56) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> print "hola mundo!" hola mundo! miércoles, 4 de septiembre de 13
  • 8. Arturo Jamaica TIPOS DE DATOS 6 •int : 15 float : 14.3 Long : 35L •bool :True False •str : “Hola Mundo” •list : [1, [2, 'three' ], 4 ] •dict : { 'food' : 'spam' , 'taste': 'yum'} •tuple : ( 1 , 'spam' , 4 , 'U' ) miércoles, 4 de septiembre de 13
  • 9. Arturo Jamaica OPERADORES 7 a + b a - b a * b a / b a % b -a a ** b a >= b a == b a != b a > b Aritméticos Comparadores a and b a or b not b Lógicos miércoles, 4 de septiembre de 13
  • 10. Arturo Jamaica MÓDULOS 8 1. Un módulo es un fichero .py 2. Puede usar paquetes 3. Un paquete es una carpeta que contiene un fichero con nombre __init__.py 12 3 miércoles, 4 de septiembre de 13
  • 11. Arturo Jamaica EJEMPLO 9 import sound.effects.echo sound.effects.echo.echofilter(...) from sound.effects import echo echo.echofilter(...) from sound.effects import echo as rev rev.echofilter(...) miércoles, 4 de septiembre de 13
  • 12. Arturo Jamaica EN PYTHON NO SE USAN CORCHETES PEP 8 10 miércoles, 4 de septiembre de 13
  • 13. Arturo Jamaica 11 def factorial(x): if x == 0: return 1 else: return x * factorial(x - 1) miércoles, 4 de septiembre de 13
  • 14. Arturo Jamaica 12 Code is read much more often than it is written. miércoles, 4 de septiembre de 13
  • 15. Arturo Jamaica class Estudiante(object): def __init__(self, nombre, edad): self.nombre = nombre self.edad = edad def hola(self): if self.edad > 18 : return '%s es mayor' % self.nombre else: return '%s es menor' % self.nombre miércoles, 4 de septiembre de 13
  • 16. Arturo Jamaica FUNCIONES 14 def my_first_function(p1, p2): return "Hello World!" VARIABLES a = 3 b = int() c = objeto() b = c miércoles, 4 de septiembre de 13
  • 17. Arturo Jamaica LISTAS L = [22,True,“una lista”, [1, 2]] TUPLAS T = (22,True,“una tupla”,(1, 2)) d = {“Kill Bill”:“Tarantino”, “Amélie”:“Jean-Pierre Jeunet”} DICCIONARIOS miércoles, 4 de septiembre de 13
  • 18. Arturo Jamaica CONVERSIONES 16 >>> int(4.3) 4 >>> str(4.3) “4.3” >>> float(4) 4.0 >>> list((4,4,5)) [4,4,5] miércoles, 4 de septiembre de 13
  • 19. Arturo Jamaica COMUNES 17 >>> len(“hey”) 3 >>> range(5) [0,1,2,3,4,5] >>> type(4) < type int > >>> sum([1,2,4]) 7 >>> map(str,[5,2,1]) [‘5’,‘2’,’1’] >>> sorted([5,2,1]) [1,2,5] >>> round(6.3243,1) 6.3 >>> dir([5,2,1]) >>> help(sorted) miércoles, 4 de septiembre de 13
  • 20. Arturo Jamaica CLASES 18 class Estudiante(object): def __init__(self, nombre, edad): self.nombre = nombre self.edad = edad def hola(self): return 'Mi nombre es is %s' % self.nombre e = Estudiante("Arturo", 21) miércoles, 4 de septiembre de 13
  • 21. Arturo Jamaica MÉTODOS ESPECIALES __cmp__(self, otro) Método llamado cuando se utilizan los operadores de comparación para comprobar si nuestro objeto es menor, mayor o igual al objeto pasado como parámetro. __len__(self) Método llamado para comprobar la longitud del objeto. Se utiliza, por ejemplo, cuando se llama a la función len(obj) sobre nuestro objeto. Como es de suponer, el método debe devolver la longitud del objeto. 19 miércoles, 4 de septiembre de 13
  • 22. Arturo Jamaica IF 20 nombre = "Arturo" if nombre == "Arturo": nombre = "Arturo Rifa!" elif nombre == "Freddier": nombre = "Hola Freddier" else: nombre = "Quien eres?" $nombre = "Arturo"; if ($nombre == "Arturo"){ $nombre = "Arturo Rifa!"; }else if (nombre == "Freddier"){ nombre = "Hola Freddier" }else{ nombre = "Quien eres?" } miércoles, 4 de septiembre de 13
  • 23. Arturo Jamaica WHILE 21 contador = 0 while contador < 5: print "numero %i" % contador contador +=1 $count = 0; while ($count < 5) { echo "Number ".$count; $count+=1; } miércoles, 4 de septiembre de 13
  • 24. Arturo Jamaica WHILE 22 for i in range(4): print "Numero %i" % i for ($i=0; $i < 5; $i++) { echo "Numero ".$i; } miércoles, 4 de septiembre de 13
  • 25. Arturo Jamaica EXCEPCIONES 23 try { $r = 3 / 0; } catch (Exception $e) { echo "Hoyo Negro"; } try: r = 3 / 0 except: print "Division entre 0” miércoles, 4 de septiembre de 13
  • 26. Arturo Jamaica INTERACCIÓN WEB 24 import urllib2 try: f = urllib2.urlopen("http://congresorest.appspot.com/ diputado/") print f.read() f.close() except HTTPError, e: print "Error!!" print e.code except URLError, e: print "Error!!" print e.code miércoles, 4 de septiembre de 13
  • 27. Arturo Jamaica FRAMEWORKS 25 1 2 3HTML CGI PHP JSP ASP Django Rails miércoles, 4 de septiembre de 13
  • 28. Arturo Jamaica FRAMEWORK 26 Web App Framework MVC Persistencia Manejo de Request miércoles, 4 de septiembre de 13
  • 29. Arturo Jamaica DJANGO Django es un framework d e desarrollo web de código abierto, escrito en Python, que cumple en cierta medida el paradigma del Modelo Vista Controlador. 27 Web client Server Django Models ControladoresTemplates miércoles, 4 de septiembre de 13
  • 30. Arturo Jamaica DJANGO 28 manage.py app app settings.py urls.py wsgi.py django-admin.py startproject app miércoles, 4 de septiembre de 13
  • 31. Arturo Jamaica DJANGO 29 $cd app $ python manage.py runserver miércoles, 4 de septiembre de 13
  • 33. Arturo Jamaica URL Y VISTAS Las Urls actuan como entrada a las peticiones y estas se resuelven con expresiones regulares. Las URLs apuntan a una función en las vistas que definen el Django comportamiento 31 URL Vista Magic .html miércoles, 4 de septiembre de 13
  • 34. Arturo Jamaica VIEWS.PY Cada función de Views recibe como parametro un HttpRequest y d e v u e lv e n un objeto HttpResponse 32 miércoles, 4 de septiembre de 13
  • 35. Arturo Jamaica EJEMPLO 33 http://mejorando.la/index from django.conf.urls.defaults import * from mysite.views import index_view urlpatterns = patterns('', (r'^index/$', index_view), ) from django.http import HttpResponse def index_view(request): html = "Bienvenido al curso" return HttpResponse(html) url.py views.py miércoles, 4 de septiembre de 13
  • 36. Arturo Jamaica EJEMPLO 34 http://mejorando.la/post/4 from django.conf.urls.defaults import * from mysite.views import index_view urlpatterns = patterns('', url(r'^post/(d{1,2})/$', post), ) from django.http import HttpResponse from mysite.models import Post def post(request,id): html = post.object.get(pk=id).title return HttpResponse(html) miércoles, 4 de septiembre de 13
  • 37. Arturo Jamaica TEMPLATES Se basan en dos tipos de objetos: Template() y Context(). • Template() contiene el string de salida que queremos devolver en el HttpResponse (normalmente HTML) • Context() contiene un diccionario con los valores que dan contexto a una plantilla 35 "Bienvenido, {{ user }}." {'user': 'Freddier'}Context Template "Bienvenido, Freddier." miércoles, 4 de septiembre de 13
  • 38. Arturo Jamaica TEMPLATES 36 from django.http import HttpResponse from django.template.loader import get_template from django.template import Context from datetime import datetime def hora_actual(request): ahora = datetime.now() t = get_template('hora.html') c = Context({'hora': ahora}) html = t.render(c) return HttpResponse(html) miércoles, 4 de septiembre de 13
  • 39. Arturo Jamaica HOT TRICK 37 from django.shortcuts import render_to_response from datetime import datetime def hora_actual(request): now = datetime.now() return render_to_response('hora.html', {'hora': now}) miércoles, 4 de septiembre de 13
  • 40. Arturo Jamaica TAGS Y FILTROS 38 filter {{ varible|filter }} inline tag {% tag var1 var2 %} block tag {% tag var1 %} ... {% endtag %} miércoles, 4 de septiembre de 13
  • 41. Arturo Jamaica TAGS 39 {% for elemento in lista %} <li>{{ elemento }}<li> {% endfor %} {% if username == "Juan" %} Hola Juan {% else %} Hola {{ usuario }}, {% endif %} miércoles, 4 de septiembre de 13
  • 42. Arturo Jamaica FILTROS 40 {{ username|length }} {{ username|wordcount }} {{ username|upper }} {{ fecha|date:”d MY” }} {{ fecha|timesince }} {'fecha': datetime.datetime(2011, 9, 11, 17, 1, 59, 385323) } miércoles, 4 de septiembre de 13
  • 43. Arturo Jamaica TAGS 41 {% for elemento in lista %} <li class="{% cycle 'rojo' 'azul' %}">{{ elemento }}<li> {% endfor %} {% include "menu_bar.html" %} {% for elemento in lista %} <li >{{ forloop.counter }} - {{ elemento }}<li> {% endfor %} miércoles, 4 de septiembre de 13
  • 44. Arturo Jamaica MODELOS 42 from django.db import models class Libro(models.Model): nombre = models.CharField(blank=True, max_length=100) creado = models.DateTimeField(blank=False) disponible = models.BooleanField(default=True) miércoles, 4 de septiembre de 13
  • 45. Arturo Jamaica TIPOS DE DATOS • BigIntegerField • BooleanField • CharField • CommaSeparatedIntegerField • DateField • DateTimeField • DecimalField • EmailField • FileField • FilePathField • FloatField • ImageField • IntegerField • NullBooleanField • PositiveIntegerField • PositiveSmallIntegerField • SlugField • SmallIntegerField • TextField • TimeField • URLField • XMLField • ForeingKey • ManyToManyField • OneToOneField 43 miércoles, 4 de septiembre de 13
  • 46. Arturo Jamaica PROPIEDADES • null (True|Flase) • blank (True|False) • choices (lista) • default (valor) • editable (True|False) • help_text (String) • unique (True|False) • primary_key • unique_for_date • unique_for_month • unique_for_year 44 miércoles, 4 de septiembre de 13
  • 47. Arturo Jamaica BASES DE DATOS DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = 'db.sqlite' DATABASE_USER = '' DATABASE_PASSWORD = '' DATABASE_HOST = 45 miércoles, 4 de septiembre de 13
  • 48. Arturo Jamaica EJECUTAR 46 $ python manage.py syncdb miércoles, 4 de septiembre de 13
  • 49. Arturo Jamaica ORM 47 books = Book.objects.all() books = Book.objects.all()[:100] books = Book.objects.all()[100:] book = Book(nombre =‘Art of war’) book.save() Query Insert miércoles, 4 de septiembre de 13
  • 50. Arturo Jamaica ORM 48 Update Update Book.Objects.all().update( disponible= False) book.id book.disponible = False book.save() miércoles, 4 de septiembre de 13
  • 52. Arturo Jamaica ORM 50 Get Book.Objects.get(id=’36’) Book.Objects.get(nombre=‘Art of war’) Filtros Book.Objects.filter(disponible=True) Book.Objects.exclude(disponible=True) miércoles, 4 de septiembre de 13
  • 53. Arturo Jamaica FILTROS campo__lt=0 campo__lte=0 campo__in=[ ,] campo__month=12 campo__startswith='' campo__istartswith='' campo__endswith='' campo__iendswith='' campo__range=( ,) campo__year=2010 campo__exact='' campo__iexact='' campo__contains='' campo__icontains='' campo__isnull=T|F campo__day=31 campo__gt=0 campo__gte=0 51 miércoles, 4 de septiembre de 13
  • 54. Arturo Jamaica RELACIONES 52 OneToOneField class Libro(models.Model): autor = OneToOneField(Autor) class Autor(models.Model): ... >> l.autor <Autor:Autor object> >> a.libro <Libro: Libro object> miércoles, 4 de septiembre de 13
  • 55. Arturo Jamaica RELACIONES 53 ForeignKeyField class Blog(models.Model): ... class Post(models.Model): blog = ForeignKey(Blog) >>b.post_set.all() [<Post: Post object>,...] >> p.blog <Blog: Blog object> miércoles, 4 de septiembre de 13
  • 56. Arturo Jamaica RELACIONES 54 ManyToMany class Post(models.Model): tags = ManyToMany(Tags) classTags(models.Model): >>p.tags.all() [<Tags:Tags object>,...] >>t.post_set.all() [<Post: Post object>,...] tags = ManyToMany(Tags, related_name='tags') miércoles, 4 de septiembre de 13
  • 57. Arturo Jamaica ADMIN 55 1. Quitar los comentarios en las url 2. Instalar 'django.contrib.admin' 3. Registrar modelos con (en admin.py) admin.site.register from django.contrib import admin miércoles, 4 de septiembre de 13
  • 58. Arturo Jamaica FORMAS 56 Las Formas son objetos que nos permiten manejardatos ingresados por los usuarios. En Django el framework se encarga de Pintar a HTML,Validar y guardar los datos ingresados Esta basado en la idea de los modelos miércoles, 4 de septiembre de 13
  • 59. Arturo Jamaica FORMAS 57 from django import forms class ContactoForm(forms.Form): titulo = forms.CharField(max_length=100, label='Titulo') mail = forms.EmailField(required=False) mensaje = forms.CharField(widget= forms.Textarea) miércoles, 4 de septiembre de 13
  • 60. Arturo Jamaica FORMAS EN TEMPLATES 58 <html> <body> <h1>Título</h1> {% if form.errors %} <p style="color: red;"> {{ form.errors|pluralize }}. </p> {% endif %} <form action="" method="post"> <table> {{ form.as_table }} </table> <input type="submit" value="Submit"> </form> </body> </html> miércoles, 4 de septiembre de 13
  • 61. Arturo Jamaica FORMS EN VIEWS 59 from django.shortcuts import render_to_response from site.app.forms import ContactoForm def contact(request): if request.method == 'POST': form = ContactoForm(request.POST) if form.is_valid(): cd = form.cleaned_data send_mail(cd['subject'], cd['message'],) return HttpResponseRedirect('/contacto/enviado/') else: form = ContactoForm() return render_to_response('contact_form.html', {'form': form}) miércoles, 4 de septiembre de 13
  • 62. Arturo Jamaica TIPOS DE DATO BooleanField CharField ChoiceField TypedChoiceField DateField DateTimeField DecimalField EmailField FileField FilePathField FloatField ImageField IPAddressField MultipleChoiceField NullBooleanField RegexField SlugField TimeField URLField ComboField MultiValuefield SplitDateTimeField ModelChoiceField ModelMultipleChoiceField 60 miércoles, 4 de septiembre de 13
  • 63. Arturo Jamaica MODELFORMS 61 from django.db import models class Libro(models.Model): nombre = models.CharField(blank=True, max_length=100) creado = models.DateTimeField(blank=False) disponible = models.BooleanField(default=True) from django import forms from books.models import Libro class LibroForm(forms.ModelForm): class Libro: model = Libro exclude = ('nombre',) miércoles, 4 de septiembre de 13
  • 64. Arturo Jamaica miércoles, 4 de septiembre de 13
  • 65. Arturo Jamaica GRACIAS!Curso Python y Django Arturo Jamaica me@arturojamaica.com miércoles, 4 de septiembre de 13