01

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

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