From 93aef51a61f25ede47c7d2976d15c9bd3647d2eb Mon Sep 17 00:00:00 2001
From: "jp.av.dev"
Date: Mon, 16 Nov 2020 21:15:22 -0300
Subject: [PATCH] +readme.md
---
Proyecto1/README.md | 476 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 476 insertions(+)
create mode 100644 Proyecto1/README.md
diff --git a/Proyecto1/README.md b/Proyecto1/README.md
new file mode 100644
index 0000000..34f576b
--- /dev/null
+++ b/Proyecto1/README.md
@@ -0,0 +1,476 @@
+**Ir a:**
+*[Repositorio](https://gitea.kickto.net/jp.av.dev/intro_Django#user-content-django-wiki)*,
+*[Proyecto y apps (bd)](https://gitea.kickto.net/jp.av.dev/intro_Django/wiki/2_Apps%26BD#user-content-proyecto-y-aplicacion-es)*
+
+-------
+
+### Creacion Entorno Virtual
+```
+python3 -m venv .django-env
+```
+
+### Usar virt-env
+```
+source .django-evn/bin/activate
+```
+
+### Installar Django
+```
+pip3 install Django
+```
+
+### Crear Proyecto
+```
+django-admin startproject NombreProyecto
+```
+
+### Detalle del proyecto:
+
+- **init.py :** Tratar directorio como paquete de Python
+- **settings.py :** Configuracion del Proyecto (*ej.TIMEZONE*)
+- **urls.py :** "Indice" de urls del sitio
+- **wsgi.py :** Interfaz entre apps del servidor y Django y/o Python frameworks
+
+
+### Creación de base de datos
+```
+python3 manage.py migrate
+```
+
+### Correr servidor de pruebas
+```
+python3 manage.py runserver
+```
+--------
+
+### Clases utilizadas por Django para manejar *'http Request and Responses'*
+##### *módulo* ***django.http***
+
+**HttpRequest:** Pasa como primer argumento a la función *view* una instancia de dicha clase (metadata del request).
+
+**HttpResponse:** Cada *view* es responsable de enviar un objeto HttpResponse.
+
+[Django Doc](https://docs.djangoproject.com/en/3.0/ref/request-response/#django.http.HttpRequest)
+
+--------
+
+## Primera Vista
+
+crear Proyecto1/views.py
+```
+from django.http import HttpResponse
+
+def primeravista(request):
+ return HttpResponse("Esta es la primera vista ٩(◕‿◕。)۶ con Django")
+
+def otra(request);
+ return HttpResponse("Otra vista ( ̄▽ ̄)ノ con Django")
+```
+
+### 'Enlazar' vista con una URL
+***urls.py***
+```
+from Proyecto1.views import primeravista, otra
+
+url_patterns = [
+ path('admin/', admin.site.urls),
+ path('primera/', primeravista),
+ path('mas/', otra),
+]
+```
+-------
+
+## Paso de parametros en URL
+
+*views.py*
+```
+def calcEdad(request, edad, ano):
+ periodo = ano - 2020
+ edadfutura = edad + periodo
+ doc = "En el %s tendras %s años
" %(ano, edadfutura)
+ return HttpResponse(doc)
+
+```
+
+*urls.py*
+```
+from Proyecto1.views import primeravista, otra, verFecha, calcEdad
+
+urlpatterns = [
+ ...
+ path('edades/', calcEdad),
+ ...
+```
+
+### Contenido Dinámico
+*views.py*
+```
+import datetime
+
+def verFecha(request):
+ fecha_ahora = datetime.datetime.now()
+ documento = " Hora y Fecha actual: %s
" % fecha_ahora
+ return HttpResponse(documento)
+```
+
+*urls.py*
+```
+from Proyecto1.views import primeravista, otra, verFecha
+
+urlpatterns = [
+ ...
+ path('fecha/', verFecha),
+ ...
+```
+
+--------
+
+## Templates o Plantillas
+*en su mayoria HTML*, se usan para separar la lógica de lo visual de un documento web.
+ "temas":["Vistas", "Modelos", "Plantillas", "Formularios", "Despliege"]
+#Uso:
+- Creación de objeto Template `plant = Template(doc_externo.read())`
+- Creacion de contexto (**datos adicionales ej, vars, func., etc**) `ctx = Context()`
+- Renderizado del objeto Template `documento = plant.render(ctx)`
+
+*Proyecto1/plantillas/miplantilla.html*
+```
+Primera plantilla en Django ╮(︶▽︶)╭
+```
+
+*views.py*
+```
+from django.template import Template, Context
+
+def primeravista(request):
+ doc_externo = open("/home/sat/weblocal/PildorasInf/Proyecto1/Proyecto1/plantillas/miplantilla.html", 'r')
+ plantilla = Template(doc_externo.read())
+ doc_externo.close()
+ ctx = Context()
+ documento = plantilla.render(ctx)
+ return HttpResponse(documento)
+
+```
+
+### Uso de variables en plantillas
+
+*views.py*
+```
+from django.template import Template, Context
+
+def primeravista(request):
+ nombre = "Zerafín"
+ apellido = "Menendes"
+ fecha = datetime.datetime.now()
+ doc_externo = open("/home/sat/weblocal/PildorasInf/Proyecto1/Proyecto1/plantillas/miplantilla.html", 'r')
+ plantilla = Template(doc_externo.read())
+ doc_externo.close()
+ ctx = Context({"nombre_persona":nombre, "apell_persona":apellido, "fecha":fecha})
+ documento = plantilla.render(ctx)
+ return HttpResponse(documento)
+
+```
+
+*miplantilla.html*
+```
+
+
+
+ Primera plantilla en Django ╮(︶▽︶)╭
+
+ El Nombre de prueba es: {{nombre_persona}}
+ El Apellido de prueba es: {{apell_persona}}
+ Día : {{fecha.day}}/{{fecha.month}}/{{fecha.year}}/
+
+
+```
+
+### Acceso a objetos y propiedades desde plantillas (uso de dicc. en contexto)
+
+*views.py*
+```
+class Persona(object):
+ def __init__(self, nombre, apellido):
+ self.nombre = nombre
+ self.apell = apellido
+
+def primeravista(request):
+ p1 = Persona("Zerafín", "Menendes")
+ fecha = datetime.datetime.now()
+ doc_externo = open("/home/sat/weblocal/PildorasInf/Proyecto1/Proyecto1/plantillas/miplantilla.html", 'r')
+ plantilla = Template(doc_externo.read())
+ doc_externo.close()
+ ctx = Context({"nombre_persona":p1.nombre, "apell_persona":p1.apellido, "fecha":fecha})
+ documento = plantilla.render(ctx)
+ return HttpResponse(documento)
+
+```
+
+### Uso de listas en contexto y plantillas
+
+*views.py*
+```
+temas_curso = ["Vistas", "Modelos", "Plantillas", "Formularios", "Despliege"]
+
+ctx = Context({"nombre_persona":p1.nombre, "apell_persona":p1.apellido, "fecha":fecha, "temas":temas_curso})
+```
+
+### Estructuras de control de flujo en plantillas
+
+*miplantilla.html*
+```
+Temas de estudio
+
+
+ {% if temas %}
+ {% for tema in temas %}
+ - {{tema}}
+ {% endfor %}
+ {% else %}
+ Nada que mostrar
+ {% endif %}
+
+
+```
+*recordar: La lógica va en las vistas. Estas lineas son con el fin de comprender el funcionamiento de Django*
+
+#### Jerarquía de llamadas desde plantilla
+
+- Diccionario
+- Atributo
+- Método
+- Índice lista
+
+
+#### Métodos en plantillas
+
+*miplantilla.html*
+```
+El Nombre de prueba es: {{nombre_persona.upper}}
+El Apellido de prueba es: {{apell_persona.upper}}
+```
+
+### Tags
+
+```
+# autoescape on por defecto
+{% autoescape on %}
+ {{ body }}
+{% endautoescape %}
+
+# Comentarios
+{# COMENTARIO DE UNA LINEA #}
+{% comment "nota opcional" %}
+ Comentario con nota, multilinea,
+ no visible para web inspector de navegador*
+{% endcomment %}
+
+# Herencia, para 'esqueletos' de plantillas (elementos comunes del sitio
+{% block barra_lateral %}
+
+{% endblock %}
+
+# Proteccion contra CSRF* (on por defecto)
+
+