SlideShare una empresa de Scribd logo
django el curso Día 3
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Temario
Vistas ,[object Object],[object Object],[object Object],[object Object]
# en urls.py (r'^example/project/(?P<project_id>+)/$', 'example_get_project') # en views.py def  example_get_project (request, project_id): try: p = Project.objects.get(project__pk=project_id)  # pk synonym of id html = ( &quot;<html> <body>&quot; &quot;<p> Project Name: %s </p>&quot; &quot;<p> Project Description: %s </p>&quot; &quot;</body> </html>&quot; ) % (p.name, p.description)  except  Project.DoesNotExist: html =  &quot;<html> <body> <p> <b> Bu! :-( No existe! <b> <p> </body> <html>&quot;   return  HttpResponse(html) Vistas
from  django.http  import  HttpResponse, HttpResponseNotFound def  example_get_project (request, project_id): try : p = Project.objects.get(project__pk=project_id)  # pk synonym of id html = ( &quot;<html> <body>&quot; &quot;<p> Project Name: %s </p>&quot; &quot;<p> Project Description: %s </p>&quot; &quot;</body> </html>&quot; ) % (p.name, p.description)   return  HttpResponse(html) except  Project.DoesNotExist: html =  &quot;<html> <body> <p> <b>&quot; &quot;Bu! :-( No existe!&quot; &quot;<b> <p> </body> <html>&quot; return   HttpResponseNotFound(html )   Vistas
from  django.http  import  HttpResponse, Http404 def  example_get_project (request, project_id): try : p = Project.objects.get(project__pk=project_id)  # pk synonym of id html = ( &quot;<html> <body>&quot; &quot;<p> Project Name: %s </p>&quot; &quot;<p> Project Description: %s </p>&quot; &quot;</body> </html>&quot; ) % (p.name, p.description)   return  HttpResponse(html) except  Project.DoesNotExist: raise   Http404   ,[object Object],Vistas
def  example_get_project_with_template (request, project_id): try : p = Project.objects.get(pk=project_id) t = loader.get_template('project_details.html') c = Context({'project': p}) r = HttpResponse(t.render(c), mimetype=&quot;application/xhtml+xml&quot;) return  r except  Project.DoesNotExist: raise  Http404 def  example_get_project_with_get_object (request, project_id) p = get_object_or_404(Project, pk=project_id) return  render_to_response('project_details', { 'project' : p }) ,[object Object],[object Object],Vistas
[object Object],Vistas ,[object Object],In [1]: from django.http import HttpResponse In [2]: response = HttpResponse() In [3]: response.write(&quot;<p>Here's the text of the Web page.</p>&quot;) ,[object Object],In [5]: response['X-DJANGO'] = 'It is the best' In [6]: response['X-DJANGO'] Out[6]: 'It is the best' ,[object Object]
import  csv, StringIO def  _gen(qset): io = StringIO.StringIO() writer = csv.writer(io) writer.writerow(TaskLog.header_row) # Add header yield  io.getvalue() for  item  in  qset: io = StringIO.StringIO() writer = csv.writer(io) writer.writerow(item.get_csv_row()) yield  io.getvalue() return def  csv_log(request, project_id, username):  ... response = HttpResponse(_gen(queryset), mimetype='text/csv') response[ 'Content-Disposition' ] = ( 'attachment; filename='   'tasklogs'   '-for-%s.csv' ) % username return  response
Atributos HttpResponse.content Métodos HttpResponse.__init__(content='', mimetype=None, status=200, content_type=DEFAULT_CONTENT_TYPE) HttpResponse.__setitem__(header, value) HttpResponse.__delitem__(header) HttpResponse.__getitem__(header) HttpResponse.has_header(header) HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None) HttpResponse.delete_cookie(key, path='/', domain=None) HttpResponse.write(content) HttpResponse.flush() HttpResponse.tell()
class HttpResponseRedirect class HttpResponsePermanentRedirect class HttpResponseNotModified class HttpResponseBadRequest class HttpResponseNotFound class HttpResponseForbidden class HttpResponseNotAllowed class HttpResponseGone class HttpResponseServerError
Vistas ,[object Object]
Plantillas ,[object Object],[object Object],[object Object],[object Object],[object Object]
In [1]: from django.template import Template # Parsear código de Templates y generar una instancia In [4]: t = Template(&quot;Hello, {{ name }}&quot;) In [6]: print t <django.template.Template object at 0x87c7aec> In [8]: from django.template import Context # Una vez compilada podemos renderizar con un contexto In [9]: c = Context({'name' : 'World'}) In [10]: t.render(c) Out[10]: u'Hello, World' Plantillas
{% extends &quot;base_for_examples.html&quot; %} {% block title %} Un proyecto: {{ project.name }} {% endblock title %} {% block content %} <p> <b> Un proyecto: </b> </p> <hr/> <p> Nombre: {{ project.name|upper }} </p> <p> Descripción: {{ project.description|truncatewords:&quot;10&quot; }} </p> {% endblock content %} Variable, el punto (.) se accede a los atributos de la variable, diccionario, llamada a una función sin arg. Etiqueta que define un bloque que se puede sobre escribir. Herencia. Filtro, módifica el string, letras mayúsculas  Indica de que template hereda Plantillas TEMPLATE_STRING_IF_INVALID
In [1]: from django.template import Template, Context In [12]: b = { 'apellido' :'Perez', 'ocupacion' : 'astronauta' } In [13]: t = Template('Yo me llamo {{ dict.apellido }} y soy {{ dict.ocupacion }}') In [14]: c = Context({'dict' : b}) In [15]: t.render(c) Out[15]: u'Yo me llamo Perez y soy astronauta' In [16]: t = Template('Yo me llamo {{ dict.apellido|upper }} y soy {{ dict.ocupacion }}') In [17]: t.render(c) Out[17]: u'Yo me llamo PEREZ y soy astronauta' ,[object Object],Plantillas
Plantillas ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
{% if project_list %} {% for project in project_list %} <li> <a class=&quot;head&quot; href='#'>{{project.name}}</a> <ul> {% for task in project.task_set.all %} <li>  <a href=&quot;#&quot; onclick=&quot;retrieve_tasklogs({{ task.id }})&quot;> {{ task.name }} </a> </li> {% endfor %} </ul> </li> {% endfor %} {% else %} <li> <a class=&quot;head&quot; href='#'> No projects in database </a> Please add some projects in the database </li> {% endif %} Plantillas
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Plantillas
<!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;  &quot;http://www.w3.org/TR/html4/loose.dtd&quot;> <html> <head> {% block title %} Titulo {% endblock title %} </head> <body> {% block content %} Aquí el contenido de la página {% endblock content %} </body> </html> Plantillas ,[object Object]
{% extends &quot;base_for_examples.html&quot; %} {% block title %} Un proyecto: {{ project.name }} {% endblock title %} {% block content %} {% block.super %} <p> <b> Un proyecto: </b> </p> <hr/> <p> Nombre: {{ project.name|upper }} </p> <p> Descripción: {{ project.description|truncatewords:&quot;10&quot; }} </p> {% endblock content %} Plantillas
<!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;  &quot;http://www.w3.org/TR/html4/loose.dtd&quot;> <html> <head> <title> Un proyecto: Curso Django </title> </head> <body> Pagina de la Aplicación: TimeTracker <p> <b> Un proyecto: </b> </p> <hr/> <p> Nombre: CURSO DJANGO </p> <p> Descripción: curso, curso, curse! </p> </body> </html> Plantillas ,[object Object]
Plantillas ,[object Object],In [23]: c = Context() In [24]: c['foo'] = 'first level' In [25]: c.push() Out[25]: {} In [26]: c['foo'] = 'second level' In [27]: c['foo'] Out[27]: 'second level' In [28]: c Out[28]: [{'foo': 'second level'}, {'foo': 'first level'}] In [29]: c.pop() Out[29]: {'foo': 'second level'} In [30]: c['foo'] Out[30]: 'first level' In [31]: c.pop() ----------------------------------------------------- <class 'django.template.context.ContextPopException'>
Plantillas ,[object Object],[object Object],[object Object],[object Object],def ip_address_processor(request): return {'ip_address': request.META['REMOTE_ADDR']} def some_view(request): # ... c = RequestContext(request, {'foo': 'bar',},   [ip_address_processor]) return t.render(c)
Plantillas ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Plantillas TEMPLATE_CONTEXT_PROCESSORS = ( &quot;django.core.context_processors.auth&quot;, &quot;django.core.context_processors.debug&quot;, &quot;django.core.context_processors.i18n&quot;, &quot;django.core.context_processors.media&quot;, &quot;timetracker.views.add_next_url&quot;, ) # --- request preprocessor / en views def add_next_url (request): return { 'next_url' : request.GET.get('next', None) } ,[object Object]
def some_view(request): # ... return render_to_response( 'my_template.html', my_data_dictionary,   context_instance=RequestContext(request) ) Plantillas ,[object Object]
Plantillas ,[object Object]
Managers ,[object Object],In [1]: from timetracker.models import Project In [2]: Project.objects.all() Out[2]: [<Project: Curso Django>, <Project: Eff>] In [5]: Project.objects.filter(name='Curso Django') Out[5]: [<Project: Curso Django>]
Managers ,[object Object],from django.db import models class TimeTrackerBaseModel (models.Model): ... class Task (TimeTrackerBaseModel): ... tasks = models.Manager() In [7]: from timetracker.models import Task In [8]: Task.objects.all() ... <type 'exceptions.AttributeError'>: type object 'Task' has no attribute 'objects' In [9]: Task.tasks.all() Out[9]: [<Task: edit templates, test and fix views>, <Task: crear algunas vistas>]
Managers ,[object Object],[object Object],[object Object],[object Object]
Managers ,[object Object],class  TaskManager (models.Manager): def  admin_task_count( self ): from  django.db  import  connection cursor = connection.cursor() cursor.execute( &quot;&quot;&quot; SELECT COUNT(*) FROM timetracker_task  WHERE timetracker_task.owner_id = 1; &quot;&quot;&quot; ) return cursor.fetchall()[0][0] def  query_admin_task_count( self ): return   self .filter(owner__username='admin').count() class  Task (TimeTrackerBaseModel): ... tasks = TaskManager()
Managers ,[object Object],In [2]: from timetracker.models import Task In [3]: Task.tasks.all() Out[3]: [<Task: edit templates, test and fix views>, <Task: crear algunas vistas>] In [4]: Task.tasks.admin_task_count() Out[4]: 2 In [5]: Task.tasks.query_admin_task_count() Out[5]: 2
Managers class  UncompletedTaskManager (models.Manager): def  get_query_set(self): return   super (UncompletedTaskManager,  self ).get_query_set().exclude(state=30) class  CompletedTaskManager (models.Manager): def  get_query_set(self): return   super (CompletedTaskManager,  self ).get_query_set().filter(state=30) # Importante el primer Manager que Django encuentra es el  # default class  Task (TimeTrackerBaseModel): ... tasks = TaskManager() uncompleted_tasks = UncompletedTaskManager() completed_tasks = CompletedTaskManager() ,[object Object]
Managers In [1]: from timetracker.models import Task In [2]: Task.uncompleted_tasks.all() Out[2]: [<Task: crear algunas vistas>] In [3]: Task.completed_tasks.all() Out[3]: [<Task: edit templates, test and fix views>] In [4]: Task.tasks.all() Out[4]: [<Task: edit templates, test and fix views>, <Task: crear algunas vistas>] ,[object Object],[object Object]
Managers ,[object Object],[object Object],[object Object],[object Object]
Un poco de AJAX y un poco de Serialización
AJAX ,[object Object],[object Object],[object Object],[object Object]
AJAX ,[object Object],{% block script %} function get_project_tasks(url) { $.ajax({ type: &quot;GET&quot;, url: url, dataType: &quot;html&quot;, success: function(html){  $(&quot;#id_tasks_set&quot;).empty().append(html); } }); } {% endblock script %} <!-- En la platilla base --> <script type=&quot;text/javascript&quot; src=&quot;/timetracker/resources/js/jquery.js&quot;> </script>
AJAX def example_ajax_get_task_for_project (request, project_id): if request.method == 'GET': p = get_object_or_404(Project, pk=project_id)  tasks = p.task_set.all() if request.is_ajax(): # HTTP_X_REQUESTED_WITH   # with string 'XMLHttpRequest' return render_to_response('task_details_ajax.html', { 'tasks' : tasks }) else: return  render_to_response('project_with_tasks_details.html',   { 'project' : p, 'tasks' : tasks }) <!-- La plantilla --> <ul> {% for task in tasks %} <li> Nombre: {{ task.name }} </li> <li> Descripción: {{ task.description }} </li> <li> Fecha de Inicio: {{ task.start_date }} </li> <!-- plin, plin, plin .. --> {% endfor %} <ul>
Serialización In [11]: from django.core import serializers In [12]: data=serializers.serialize(&quot;xml&quot;,Project.objects.filter(pk=1), fields=('name',)) In [17]: data Out[17]: '<?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?><django-objects version=&quot;1.0&quot;><object pk=&quot;1&quot; model=&quot;timetracker.project&quot;><field type=&quot;CharField&quot; name=&quot;name&quot;>Curso Django</field></object></django-objects> In [18]: for obj in serializers.deserialize(&quot;xml&quot;, data): ....:  print obj, type(obj) ....:  ....:  <DeserializedObject: Curso Django> <class 'django.core.serializers.base.DeserializedObject'>
Serialización ,[object Object],[object Object],[object Object],out = open(&quot;file.xml&quot;, &quot;w&quot;) xml_serializer.serialize(SomeModel.objects.all(), stream=out) XMLSerializer = serializers.get_serializer(&quot;xml&quot;) xml_serializer = XMLSerializer() xml_serializer.serialize(queryset) data = xml_serializer.getvalue() for deserialized_object in serializers.deserialize(&quot;xml&quot;, data): if object_should_be_saved(deserialized_object): deserialized_object.save()
AJAX y Serialización ,[object Object],json_serializer = serializers.get_serializer(&quot;json&quot;)() json_serializer.serialize(queryset, ensure_ascii=False, stream=response)
This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 2.5 Argentina License. To view a copy of this license, visit  http://creativecommons.org/licenses/by-nc-sa/2.5/ar/  or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Más contenido relacionado

La actualidad más candente

Exposicion de php
Exposicion de phpExposicion de php
Exposicion de php
angie barre
 
Php Con Postgres
Php Con PostgresPhp Con Postgres
Php Con Postgres
Jorge Arevalo
 
Conociendo PHP
Conociendo PHPConociendo PHP
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
Javier P.
 
Php02 fundamentos de php
Php02 fundamentos de phpPhp02 fundamentos de php
Php02 fundamentos de phpJulio Pari
 
Php03 variables externas
Php03 variables externasPhp03 variables externas
Php03 variables externasJulio Pari
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.
Asier Marqués
 
Manual php completo by_ desarrolloweb
Manual php completo by_ desarrollowebManual php completo by_ desarrolloweb
Manual php completo by_ desarrolloweb
Jomar Burgos Palacios
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPress
Asier Marqués
 
4.Programación con PHP y MySQL
4.Programación con PHP y MySQL4.Programación con PHP y MySQL
4.Programación con PHP y MySQL
Ramiro Estigarribia Canese
 

La actualidad más candente (10)

Exposicion de php
Exposicion de phpExposicion de php
Exposicion de php
 
Php Con Postgres
Php Con PostgresPhp Con Postgres
Php Con Postgres
 
Conociendo PHP
Conociendo PHPConociendo PHP
Conociendo PHP
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Php02 fundamentos de php
Php02 fundamentos de phpPhp02 fundamentos de php
Php02 fundamentos de php
 
Php03 variables externas
Php03 variables externasPhp03 variables externas
Php03 variables externas
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.
 
Manual php completo by_ desarrolloweb
Manual php completo by_ desarrollowebManual php completo by_ desarrolloweb
Manual php completo by_ desarrolloweb
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPress
 
4.Programación con PHP y MySQL
4.Programación con PHP y MySQL4.Programación con PHP y MySQL
4.Programación con PHP y MySQL
 

Destacado

Web Page
Web PageWeb Page
Web Page
BinnyComp1900
 
I Contratti Dell\ Informatica Smau 2008
I Contratti Dell\ Informatica Smau 2008I Contratti Dell\ Informatica Smau 2008
I Contratti Dell\ Informatica Smau 2008
antonino attanasio
 
Bases de datos
Bases de datosBases de datos
Bases de datos
Felix Santiago
 
Career Corps: Get Noticed!
Career Corps: Get Noticed!Career Corps: Get Noticed!
Career Corps: Get Noticed!
Career Corps
 

Destacado (6)

Presentatie 210208
Presentatie 210208Presentatie 210208
Presentatie 210208
 
Web Page
Web PageWeb Page
Web Page
 
Open house
Open houseOpen house
Open house
 
I Contratti Dell\ Informatica Smau 2008
I Contratti Dell\ Informatica Smau 2008I Contratti Dell\ Informatica Smau 2008
I Contratti Dell\ Informatica Smau 2008
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Career Corps: Get Noticed!
Career Corps: Get Noticed!Career Corps: Get Noticed!
Career Corps: Get Noticed!
 

Similar a Curso de Django | Django Course

tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.comoctabio
 
Desymfony 2011 - Twig
Desymfony 2011 - TwigDesymfony 2011 - Twig
Desymfony 2011 - Twig
Javier Eguiluz
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008guest02b440
 
Especialista Web J9 Php
Especialista Web J9  PhpEspecialista Web J9  Php
Especialista Web J9 Php
Moisés Cid Deza
 
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
Chema Alonso
 
Javascript
JavascriptJavascript
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva pagejubacalo
 
Php Basico
Php BasicoPhp Basico
Php Basico
Eliecer Cedano
 
Curso de HTML5
Curso de HTML5Curso de HTML5
Curso de HTML5
Carlos Azaustre
 
Proyectos Web 3 Introduccion Php
Proyectos Web   3 Introduccion PhpProyectos Web   3 Introduccion Php
Proyectos Web 3 Introduccion Php
Jose Ponce
 
Java web Lección 04 - JSTL
Java web Lección 04 - JSTLJava web Lección 04 - JSTL
Java web Lección 04 - JSTL
Eric Gustavo Coronel Castillo
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
Marcos Labad
 
Curso php dia2
Curso php dia2Curso php dia2
Curso php dia2cognos_uie
 
Taller II Coreis Python 13112009
Taller II Coreis Python 13112009Taller II Coreis Python 13112009
Taller II Coreis Python 13112009
Carlos Cardenas Fernandez
 

Similar a Curso de Django | Django Course (20)

tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.com
 
PHP
PHPPHP
PHP
 
Desymfony 2011 - Twig
Desymfony 2011 - TwigDesymfony 2011 - Twig
Desymfony 2011 - Twig
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
 
Especialista Web J9 Php
Especialista Web J9  PhpEspecialista Web J9  Php
Especialista Web J9 Php
 
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
 
Javascript
JavascriptJavascript
Javascript
 
JSP
JSPJSP
JSP
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
 
Php Basico
Php BasicoPhp Basico
Php Basico
 
Curso de HTML5
Curso de HTML5Curso de HTML5
Curso de HTML5
 
Proyectos Web 3 Introduccion Php
Proyectos Web   3 Introduccion PhpProyectos Web   3 Introduccion Php
Proyectos Web 3 Introduccion Php
 
Clases de php
Clases de phpClases de php
Clases de php
 
Tema2a Jsp
Tema2a JspTema2a Jsp
Tema2a Jsp
 
Java web Lección 04 - JSTL
Java web Lección 04 - JSTLJava web Lección 04 - JSTL
Java web Lección 04 - JSTL
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
 
Curso php dia2
Curso php dia2Curso php dia2
Curso php dia2
 
Taller II Coreis Python 13112009
Taller II Coreis Python 13112009Taller II Coreis Python 13112009
Taller II Coreis Python 13112009
 
DiseñO Pagina Web
DiseñO Pagina WebDiseñO Pagina Web
DiseñO Pagina Web
 

Último

Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
durangense277
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
cj3806354
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
espinozaernesto427
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 

Último (20)

Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 

Curso de Django | Django Course

  • 2.
  • 3.
  • 4. # en urls.py (r'^example/project/(?P<project_id>+)/$', 'example_get_project') # en views.py def example_get_project (request, project_id): try: p = Project.objects.get(project__pk=project_id) # pk synonym of id html = ( &quot;<html> <body>&quot; &quot;<p> Project Name: %s </p>&quot; &quot;<p> Project Description: %s </p>&quot; &quot;</body> </html>&quot; ) % (p.name, p.description) except Project.DoesNotExist: html = &quot;<html> <body> <p> <b> Bu! :-( No existe! <b> <p> </body> <html>&quot; return HttpResponse(html) Vistas
  • 5. from django.http import HttpResponse, HttpResponseNotFound def example_get_project (request, project_id): try : p = Project.objects.get(project__pk=project_id) # pk synonym of id html = ( &quot;<html> <body>&quot; &quot;<p> Project Name: %s </p>&quot; &quot;<p> Project Description: %s </p>&quot; &quot;</body> </html>&quot; ) % (p.name, p.description) return HttpResponse(html) except Project.DoesNotExist: html = &quot;<html> <body> <p> <b>&quot; &quot;Bu! :-( No existe!&quot; &quot;<b> <p> </body> <html>&quot; return HttpResponseNotFound(html ) Vistas
  • 6.
  • 7.
  • 8.
  • 9. import csv, StringIO def _gen(qset): io = StringIO.StringIO() writer = csv.writer(io) writer.writerow(TaskLog.header_row) # Add header yield io.getvalue() for item in qset: io = StringIO.StringIO() writer = csv.writer(io) writer.writerow(item.get_csv_row()) yield io.getvalue() return def csv_log(request, project_id, username): ... response = HttpResponse(_gen(queryset), mimetype='text/csv') response[ 'Content-Disposition' ] = ( 'attachment; filename=' 'tasklogs' '-for-%s.csv' ) % username return response
  • 10. Atributos HttpResponse.content Métodos HttpResponse.__init__(content='', mimetype=None, status=200, content_type=DEFAULT_CONTENT_TYPE) HttpResponse.__setitem__(header, value) HttpResponse.__delitem__(header) HttpResponse.__getitem__(header) HttpResponse.has_header(header) HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None) HttpResponse.delete_cookie(key, path='/', domain=None) HttpResponse.write(content) HttpResponse.flush() HttpResponse.tell()
  • 11. class HttpResponseRedirect class HttpResponsePermanentRedirect class HttpResponseNotModified class HttpResponseBadRequest class HttpResponseNotFound class HttpResponseForbidden class HttpResponseNotAllowed class HttpResponseGone class HttpResponseServerError
  • 12.
  • 13.
  • 14. In [1]: from django.template import Template # Parsear código de Templates y generar una instancia In [4]: t = Template(&quot;Hello, {{ name }}&quot;) In [6]: print t <django.template.Template object at 0x87c7aec> In [8]: from django.template import Context # Una vez compilada podemos renderizar con un contexto In [9]: c = Context({'name' : 'World'}) In [10]: t.render(c) Out[10]: u'Hello, World' Plantillas
  • 15. {% extends &quot;base_for_examples.html&quot; %} {% block title %} Un proyecto: {{ project.name }} {% endblock title %} {% block content %} <p> <b> Un proyecto: </b> </p> <hr/> <p> Nombre: {{ project.name|upper }} </p> <p> Descripción: {{ project.description|truncatewords:&quot;10&quot; }} </p> {% endblock content %} Variable, el punto (.) se accede a los atributos de la variable, diccionario, llamada a una función sin arg. Etiqueta que define un bloque que se puede sobre escribir. Herencia. Filtro, módifica el string, letras mayúsculas Indica de que template hereda Plantillas TEMPLATE_STRING_IF_INVALID
  • 16.
  • 17.
  • 18. {% if project_list %} {% for project in project_list %} <li> <a class=&quot;head&quot; href='#'>{{project.name}}</a> <ul> {% for task in project.task_set.all %} <li> <a href=&quot;#&quot; onclick=&quot;retrieve_tasklogs({{ task.id }})&quot;> {{ task.name }} </a> </li> {% endfor %} </ul> </li> {% endfor %} {% else %} <li> <a class=&quot;head&quot; href='#'> No projects in database </a> Please add some projects in the database </li> {% endif %} Plantillas
  • 19.
  • 20.
  • 21. {% extends &quot;base_for_examples.html&quot; %} {% block title %} Un proyecto: {{ project.name }} {% endblock title %} {% block content %} {% block.super %} <p> <b> Un proyecto: </b> </p> <hr/> <p> Nombre: {{ project.name|upper }} </p> <p> Descripción: {{ project.description|truncatewords:&quot;10&quot; }} </p> {% endblock content %} Plantillas
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37. Un poco de AJAX y un poco de Serialización
  • 38.
  • 39.
  • 40. AJAX def example_ajax_get_task_for_project (request, project_id): if request.method == 'GET': p = get_object_or_404(Project, pk=project_id) tasks = p.task_set.all() if request.is_ajax(): # HTTP_X_REQUESTED_WITH # with string 'XMLHttpRequest' return render_to_response('task_details_ajax.html', { 'tasks' : tasks }) else: return render_to_response('project_with_tasks_details.html', { 'project' : p, 'tasks' : tasks }) <!-- La plantilla --> <ul> {% for task in tasks %} <li> Nombre: {{ task.name }} </li> <li> Descripción: {{ task.description }} </li> <li> Fecha de Inicio: {{ task.start_date }} </li> <!-- plin, plin, plin .. --> {% endfor %} <ul>
  • 41. Serialización In [11]: from django.core import serializers In [12]: data=serializers.serialize(&quot;xml&quot;,Project.objects.filter(pk=1), fields=('name',)) In [17]: data Out[17]: '<?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?><django-objects version=&quot;1.0&quot;><object pk=&quot;1&quot; model=&quot;timetracker.project&quot;><field type=&quot;CharField&quot; name=&quot;name&quot;>Curso Django</field></object></django-objects> In [18]: for obj in serializers.deserialize(&quot;xml&quot;, data): ....: print obj, type(obj) ....: ....: <DeserializedObject: Curso Django> <class 'django.core.serializers.base.DeserializedObject'>
  • 42.
  • 43.
  • 44. This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 2.5 Argentina License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ar/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.