SlideShare una empresa de Scribd logo
1 de 44
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 phpangie barre
 
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 jQueryJavier 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_ desarrollowebJomar 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 WordPressAsier Marqués
 

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

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 (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

El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 

Último (20)

El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 

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.