01

Fuzan 2021-07-02 22:02:26 -04:00
parent 6049662435
commit 6be4da9f2d

@ -5,22 +5,22 @@
------- -------
### Creacion Entorno Virtual ### Creacion Entorno Virtual
``` ```sh
python3 -m venv .django-env python3 -m venv .django-env
``` ```
### Usar virt-env ### Usar virt-env
``` ```sh
source .django-evn/bin/activate source .django-evn/bin/activate
``` ```
### Installar Django ### Installar Django
``` ```sh
pip3 install Django pip3 install Django
``` ```
### Crear Proyecto ### Crear Proyecto
``` ```sh
django-admin startproject NombreProyecto django-admin startproject NombreProyecto
``` ```
@ -33,12 +33,12 @@ django-admin startproject NombreProyecto
### Creación de base de datos ### Creación de base de datos
``` ```sh
python3 manage.py migrate python3 manage.py migrate
``` ```
### Correr servidor de pruebas ### Correr servidor de pruebas
``` ```sh
python3 manage.py runserver <ip:puerto> python3 manage.py runserver <ip:puerto>
``` ```
-------- --------
@ -57,7 +57,7 @@ python3 manage.py runserver <ip:puerto>
## Primera Vista ## Primera Vista
crear Proyecto1/views.py crear Proyecto1/views.py
``` ```py
from django.http import HttpResponse from django.http import HttpResponse
def primeravista(request): def primeravista(request):
@ -69,7 +69,7 @@ def otra(request);
### 'Enlazar' vista con una URL ### 'Enlazar' vista con una URL
***urls.py*** ***urls.py***
``` ```py
from Proyecto1.views import primeravista, otra from Proyecto1.views import primeravista, otra
url_patterns = [ url_patterns = [
@ -83,7 +83,7 @@ url_patterns = [
## Paso de parametros en URL ## Paso de parametros en URL
*views.py* *views.py*
``` ```py
def calcEdad(request, edad, ano): def calcEdad(request, edad, ano):
periodo = ano - 2020 periodo = ano - 2020
edadfutura = edad + periodo edadfutura = edad + periodo
@ -93,7 +93,7 @@ def calcEdad(request, edad, ano):
``` ```
*urls.py* *urls.py*
``` ```py
from Proyecto1.views import primeravista, otra, verFecha, calcEdad from Proyecto1.views import primeravista, otra, verFecha, calcEdad
urlpatterns = [ urlpatterns = [
@ -104,7 +104,7 @@ urlpatterns = [
### Contenido Dinámico ### Contenido Dinámico
*views.py* *views.py*
``` ```py
import datetime import datetime
def verFecha(request): def verFecha(request):
@ -114,7 +114,7 @@ def verFecha(request):
``` ```
*urls.py* *urls.py*
``` ```py
from Proyecto1.views import primeravista, otra, verFecha from Proyecto1.views import primeravista, otra, verFecha
urlpatterns = [ urlpatterns = [
@ -134,12 +134,12 @@ urlpatterns = [
- Renderizado del objeto Template `documento = plant.render(ctx)` - Renderizado del objeto Template `documento = plant.render(ctx)`
*Proyecto1/plantillas/miplantilla.html* *Proyecto1/plantillas/miplantilla.html*
``` ```html
<html><body><h3>Primera plantilla en Django ╮(︶▽︶)╭</h3></body></html> <html><body><h3>Primera plantilla en Django ╮(︶▽︶)╭</h3></body></html>
``` ```
*views.py* *views.py*
``` ```py
from django.template import Template, Context from django.template import Template, Context
def primeravista(request): def primeravista(request):
@ -155,7 +155,7 @@ def primeravista(request):
### Uso de variables en plantillas ### Uso de variables en plantillas
*views.py* *views.py*
``` ```py
from django.template import Template, Context from django.template import Template, Context
def primeravista(request): def primeravista(request):
@ -172,7 +172,7 @@ def primeravista(request):
``` ```
*miplantilla.html* *miplantilla.html*
``` ```html
<html> <html>
<body> <body>
<h2 style="color: magenta"> <h2 style="color: magenta">
@ -188,7 +188,7 @@ def primeravista(request):
### Acceso a objetos y propiedades desde plantillas (uso de dicc. en contexto) ### Acceso a objetos y propiedades desde plantillas (uso de dicc. en contexto)
*views.py* *views.py*
``` ```py
class Persona(object): class Persona(object):
def __init__(self, nombre, apellido): def __init__(self, nombre, apellido):
self.nombre = nombre self.nombre = nombre
@ -209,7 +209,7 @@ def primeravista(request):
### Uso de listas en contexto y plantillas ### Uso de listas en contexto y plantillas
*views.py* *views.py*
``` ```py
temas_curso = ["Vistas", "Modelos", "Plantillas", "Formularios", "Despliege"] temas_curso = ["Vistas", "Modelos", "Plantillas", "Formularios", "Despliege"]
ctx = Context({"nombre_persona":p1.nombre, "apell_persona":p1.apellido, "fecha":fecha, "temas":temas_curso}) ctx = Context({"nombre_persona":p1.nombre, "apell_persona":p1.apellido, "fecha":fecha, "temas":temas_curso})
@ -218,7 +218,7 @@ ctx = Context({"nombre_persona":p1.nombre, "apell_persona":p1.apellido, "fecha":
### Estructuras de control de flujo en plantillas ### Estructuras de control de flujo en plantillas
*miplantilla.html* *miplantilla.html*
``` ```html
<p><strong>Temas de estudio</strong></p> <p><strong>Temas de estudio</strong></p>
<p> <p>
<ul> <ul>
@ -245,14 +245,14 @@ ctx = Context({"nombre_persona":p1.nombre, "apell_persona":p1.apellido, "fecha":
#### Métodos en plantillas #### Métodos en plantillas
*miplantilla.html* *miplantilla.html*
``` ```html
<p>El Nombre de prueba es: <strong>{{nombre_persona.upper}}</strong></p> <p>El Nombre de prueba es: <strong>{{nombre_persona.upper}}</strong></p>
<p>El Apellido de prueba es: <strong>{{apell_persona.upper}}</strong></p> <p>El Apellido de prueba es: <strong>{{apell_persona.upper}}</strong></p>
``` ```
### Tags ### Tags
``` ```html
# autoescape on por defecto # autoescape on por defecto
{% autoescape on %} {% autoescape on %}
{{ body }} {{ body }}
@ -279,7 +279,7 @@ ctx = Context({"nombre_persona":p1.nombre, "apell_persona":p1.apellido, "fecha":
# Cross Site Request Forgery # Cross Site Request Forgery
``` ```
``` ```html
# for # for
{% for x, y in points %} {% for x, y in points %}
There is a point at {{ x }},{{ y }} There is a point at {{ x }},{{ y }}
@ -300,7 +300,7 @@ ctx = Context({"nombre_persona":p1.nombre, "apell_persona":p1.apellido, "fecha":
### Fitros ### Fitros
*miplantilla.html* *miplantilla.html*
``` ```html
# filtro upper # filtro upper
<p>El Apellido de prueba es: <strong>{{apell_persona|upper}}</strong></p> <p>El Apellido de prueba es: <strong>{{apell_persona|upper}}</strong></p>
@ -324,7 +324,7 @@ ctx = Context({"nombre_persona":p1.nombre, "apell_persona":p1.apellido, "fecha":
De esta forma, el objeto *render* no adminte un contexto como parametro. De esta forma, el objeto *render* no adminte un contexto como parametro.
Debe recibir un *diccionario* Debe recibir un *diccionario*
*views.py* *views.py*
``` ```py
.... ....
from django.template.loader import get_template from django.template.loader import get_template
@ -336,7 +336,7 @@ return HttpResponse(documento)
Especificar ruta a plantillas Especificar ruta a plantillas
*settings.py* *settings.py*
``` ```py
TEMLPATES = [ TEMLPATES = [
... ...
'DIRS': ['/home/sat/weblocal/PildorasInf/Proyecto1/Proyecto1/plantillas'], 'DIRS': ['/home/sat/weblocal/PildorasInf/Proyecto1/Proyecto1/plantillas'],
@ -347,7 +347,7 @@ TEMLPATES = [
### Simplificación de código con paquete shortcuts ### Simplificación de código con paquete shortcuts
[Django-doc](https://docs.djangoproject.com/en/3.0/topics/http/shortcuts/) [Django-doc](https://docs.djangoproject.com/en/3.0/topics/http/shortcuts/)
*views.py* *views.py*
``` ```py
... ...
from django.shortcuts import render from django.shortcuts import render
@ -361,7 +361,7 @@ from django.shortcuts import render
### Pantillas dentro de plantillas ( incrustadas ) ### Pantillas dentro de plantillas ( incrustadas )
ej. barra navegacion simple */plantillas/superior/barra.html* ej. barra navegacion simple */plantillas/superior/barra.html*
``` ```html
<html> <html>
<style> <style>
#barra{ #barra{
@ -388,7 +388,7 @@ ej. barra navegacion simple */plantillas/superior/barra.html*
</html> </html>
``` ```
Incrustar en *miplantilla.html* Incrustar en *miplantilla.html*
``` ```html
<html> <html>
<body> <body>
{% include "superior/barra.html" %} {% include "superior/barra.html" %}
@ -409,7 +409,7 @@ Parent.html
ej. Parent ej. Parent
*plantillas/base.html* *plantillas/base.html*
``` ```html
<html> <html>
<head> <head>
@ -437,7 +437,7 @@ ej. Parent
ej. child ej. child
*childpage1.html* *childpage1.html*
``` ```html
{% extends "base.html" %} {% extends "base.html" %}
{% block title %} Pagina hija {% endblock %} {% block title %} Pagina hija {% endblock %}
@ -452,14 +452,14 @@ ej. child
{% endblock %} {% endblock %}
``` ```
Registrar vista *views.py* y url en *urls.py* Registrar vista *views.py* y url en *urls.py*
``` ```py
def herencia1(request): def herencia1(request):
fecha_ahora = datetime.datetime.now() fecha_ahora = datetime.datetime.now()
return render(request, "childpage1.html", {"verFecha":fecha_ahora}) return render(request, "childpage1.html", {"verFecha":fecha_ahora})
# lo mismo para childpage2.html # lo mismo para childpage2.html
``` ```
``` ```py
from Proyecto1.views import primeravista, otra, verFecha, calcEdad, herencia1, herencia2 from Proyecto1.views import primeravista, otra, verFecha, calcEdad, herencia1, herencia2
urlpatterns = [ urlpatterns = [
@ -473,4 +473,4 @@ urlpatterns = [
**Ir a:** **Ir a:**
*[Repositorio](https://gitea.kickto.net/jp.av.dev/intro_Django#user-content-django-wiki)*, *[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)* *[Proyecto y apps (bd)](https://gitea.kickto.net/jp.av.dev/intro_Django/wiki/2_Apps%26BD#user-content-proyecto-y-aplicacion-es)*