0
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 : htt...
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 A...
Arturo Jamaica
PYTHON
Python es un lenguaje de programación creado por Guido van
Rossum a principios de los años 90 cuyo n...
Arturo Jamaica
VENTAJAS
•Legible: Sintaxis intuiva y estricta
•Productivo : Entre 1/3 y 1/5 más rápido que
Java o C++
•Por...
Arturo Jamaica
COMO LO USO?
5
#!/usr/bin/env python
print "hola mundo!"
$ python holamundo.py
hola mundo!
holamundo.py Con...
Arturo Jamaica
TIPOS DE DATOS
6
•int : 15 float : 14.3 Long : 35L
•bool :True False
•str : “Hola Mundo”
•list : [1, [2, 'th...
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 ...
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...
Arturo Jamaica
EJEMPLO
9
import sound.effects.echo
sound.effects.echo.echofilter(...)
from sound.effects import echo
echo.e...
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(...
Arturo Jamaica
FUNCIONES
14
def my_first_function(p1, p2):
return "Hello World!"
VARIABLES
a = 3
b = int()
c = objeto()
b =...
Arturo Jamaica
LISTAS
L = [22,True,“una lista”, [1, 2]]
TUPLAS
T = (22,True,“una tupla”,(1, 2))
d = {“Kill Bill”:“Tarantin...
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...
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(...
Arturo Jamaica
CLASES
18
class Estudiante(object):
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad...
Arturo Jamaica
MÉTODOS ESPECIALES
__cmp__(self, otro)
Método llamado cuando se
utilizan los operadores de
comparación para...
Arturo Jamaica
IF
20
nombre = "Arturo"
if nombre == "Arturo":
nombre = "Arturo Rifa!"
elif nombre == "Freddier":
nombre = ...
Arturo Jamaica
WHILE
21
contador = 0
while contador < 5:
print "numero %i" % contador
contador +=1
$count = 0;
while ($cou...
Arturo Jamaica
WHILE
22
for i in range(4):
print "Numero %i" % i
for ($i=0; $i < 5; $i++) {
echo "Numero ".$i;
}
miércoles...
Arturo Jamaica
EXCEPCIONES
23
try {
$r = 3 / 0;
} catch (Exception $e) {
echo "Hoyo Negro";
}
try:
r = 3 / 0
except:
print...
Arturo Jamaica
INTERACCIÓN WEB
24
import urllib2
try:
f = urllib2.urlopen("http://congresorest.appspot.com/
diputado/")
pr...
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...
Arturo Jamaica
DJANGO
28
manage.py
app
app
settings.py urls.py wsgi.py
django-admin.py startproject app
miércoles, 4 de se...
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.
...
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 HttpRespon...
Arturo Jamaica
EJEMPLO
33
http://mejorando.la/index
from django.conf.urls.defaults import *
from mysite.views import index...
Arturo Jamaica
EJEMPLO
34
http://mejorando.la/post/4
from django.conf.urls.defaults import *
from mysite.views import inde...
Arturo Jamaica
TEMPLATES
Se basan en dos tipos de objetos: Template() y Context().
• Template() contiene el string de sali...
Arturo Jamaica
TEMPLATES
36
from django.http import HttpResponse
from django.template.loader import get_template
from djan...
Arturo Jamaica
HOT TRICK
37
from django.shortcuts import render_to_response
from datetime import datetime
def hora_actual(...
Arturo Jamaica
TAGS Y FILTROS
38
filter {{ varible|filter }}
inline tag {% tag var1 var2 %}
block tag
{% tag var1 %}
...
{% ...
Arturo Jamaica
TAGS
39
{% for elemento in lista %}
<li>{{ elemento }}<li>
{% endfor %}
{% if username == "Juan" %}
Hola Ju...
Arturo Jamaica
FILTROS
40
{{ username|length }} {{ username|wordcount }}
{{ username|upper }}
{{ fecha|date:”d MY” }} {{ f...
Arturo Jamaica
TAGS
41
{% for elemento in lista %}
<li class="{% cycle 'rojo' 'azul' %}">{{ elemento }}<li>
{% endfor %}
{...
Arturo Jamaica
MODELOS
42
from django.db import models
class Libro(models.Model):
nombre = models.CharField(blank=True, ma...
Arturo Jamaica
TIPOS DE DATOS
• BigIntegerField
• BooleanField
• CharField
• CommaSeparatedIntegerField
• DateField
• Date...
Arturo Jamaica
PROPIEDADES
• null (True|Flase)
• blank (True|False)
• choices (lista)
• default (valor)
• editable (True|F...
Arturo Jamaica
BASES DE DATOS
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'db.sqlite'
DATABASE_USER = ''
DATABASE_PASSWORD...
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 = ...
Arturo Jamaica
ORM
48
Update
Update
Book.Objects.all().update( disponible= False)
book.id
book.disponible = False
book.sav...
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(dispo...
Arturo Jamaica
FILTROS
campo__lt=0
campo__lte=0
campo__in=[ ,]
campo__month=12
campo__startswith=''
campo__istartswith=''
...
Arturo Jamaica
RELACIONES
52
OneToOneField
class Libro(models.Model):
autor = OneToOneField(Autor)
class Autor(models.Mode...
Arturo Jamaica
RELACIONES
53
ForeignKeyField
class Blog(models.Model):
...
class Post(models.Model):
blog = ForeignKey(Blo...
Arturo Jamaica
RELACIONES
54
ManyToMany
class Post(models.Model):
tags = ManyToMany(Tags)
classTags(models.Model):
>>p.tag...
Arturo Jamaica
ADMIN
55
1. Quitar los comentarios en las url
2. Instalar 'django.contrib.admin'
3. Registrar modelos con (...
Arturo Jamaica
FORMAS
56
Las Formas son objetos que nos permiten
manejardatos ingresados por los usuarios.
En Django el fr...
Arturo Jamaica
FORMAS
57
from django import forms
class ContactoForm(forms.Form):
titulo = forms.CharField(max_length=100,...
Arturo Jamaica
FORMAS EN TEMPLATES
58
<html> <body>
<h1>Título</h1>
{% if form.errors %}
<p style="color: red;">
{{ form.e...
Arturo Jamaica
FORMS EN VIEWS
59
from django.shortcuts import render_to_response
from site.app.forms import ContactoForm
d...
Arturo Jamaica
TIPOS DE DATO
BooleanField
CharField
ChoiceField
TypedChoiceField
DateField
DateTimeField
DecimalField
Emai...
Arturo Jamaica
MODELFORMS
61
from django.db import models
class Libro(models.Model):
nombre = models.CharField(blank=True,...
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
Upcoming SlideShare
Loading in...5
×

Django

902

Published on

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
902
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
63
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Django"

  1. 1. Arturo Jamaica miércoles, 4 de septiembre de 13
  2. 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. 3. Arturo Jamaica 2 Python y Django Aplicaciones web miércoles, 4 de septiembre de 13
  4. 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. 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. 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. 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. 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. 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. 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. 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. 12. Arturo Jamaica EN PYTHON NO SE USAN CORCHETES PEP 8 10 miércoles, 4 de septiembre de 13
  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. 14. Arturo Jamaica 12 Code is read much more often than it is written. miércoles, 4 de septiembre de 13
  15. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 27. Arturo Jamaica FRAMEWORKS 25 1 2 3HTML CGI PHP JSP ASP Django Rails miércoles, 4 de septiembre de 13
  28. 28. Arturo Jamaica FRAMEWORK 26 Web App Framework MVC Persistencia Manejo de Request miércoles, 4 de septiembre de 13
  29. 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. 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. 31. Arturo Jamaica DJANGO 29 $cd app $ python manage.py runserver miércoles, 4 de septiembre de 13
  32. 32. Arturo Jamaica A DETALLE 30 Web client Server Django Views.py URLS.pyTemplates Models.py miércoles, 4 de septiembre de 13
  33. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 48. Arturo Jamaica EJECUTAR 46 $ python manage.py syncdb miércoles, 4 de septiembre de 13
  49. 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. 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
  51. 51. Arturo Jamaica ORM 49 Delete Update Book.Objects.all().delte() book.id book.delete() miércoles, 4 de septiembre de 13
  52. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 64. Arturo Jamaica miércoles, 4 de septiembre de 13
  65. 65. Arturo Jamaica GRACIAS!Curso Python y Django Arturo Jamaica me@arturojamaica.com miércoles, 4 de septiembre de 13
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×