Evilnapsis

Programming, Hacking and More

Python

Enviar y Recibir Parametros por metodo GET en Django Python

Enviar y recibir valores por el metodo GET siempre es util para cambiar el comportamiento de nuestros sistemas o simplemente para recibir datos de una busqueda o algo asi.

Lo cierto es que en general el metodo GET solo debe usarse en casos que estemos seguros que los datos que se envian no son sensibles, ya que los datos por metodo GEt se envian por la URL y esta es visible en el navegador.

En este articulo vamos a crear un proyecto Django en Python para mostrar el uso del parametro GET.

En anteriores articulos hemos visto como crear el proyecto en Django, manejo de vistas templates, etc.

Empezando

Ya debemos tener instalado el Django en nuestro PC ahora vamos a crear un proyecto que lo nombre: djforms1

django-admin startproject djforms1

Esto nos va a crear una serie de archivos de django, el archivo djforms1/manage.py contiene el script para correr el proyecto.

Ahora en la carpeta djforms1/djforms1/ vamos a crear la carpeta templates/djforms1 donde guardaremos los templates y las vistas de nuestro proyecto.

Codigo de el Archivo template.html

El archivo template.html contiene el siguiente codigo.

<!DOCTYPE html>
<html>
<head>
	<title>Django Forms #1</title>
</head>
<body>

<div class="container">
	{% block mycontent %}
	{% endblock %}
</div>
</body>
</html>

Los bloques de codigo contenidos en {% %} son contenido que sera sustituido por vistas.

Codigo del archivo index-view.html

El archivo index-view.html es nuestra primera vista y sera un formulario con 3 datos, nombre, email y password.

{% extends 'djforms1/template.html' %}

{% block mycontent %}

<h1>Formulario</h1>
<p>Hola esta es una vista</p>
<form action="result" method="get">
    <label for="your_name">Tu nombre: </label>
    <input id="name" type="text" name="name" placeholder="Tu nombre">
    <br>
    <label for="your_name">Tu email: </label>
    <input id="name" type="text" name="email" placeholder="Tu email">
    <br>
    <label for="your_name">Tu password: </label>
    <input id="name" type="password" name="password" placeholder="Tu password">

    <input type="submit" value="Enviar Datos">
</form>

{% endblock %}

Lo que hace esta vista es leer los datos del usuario y despues llamar al archivo “result” que veremos mas adelante como una funcion o ruta en python.

El formulario sirve para Enviar los datos via GET, aun que despues veremos que cuando se envian los datos via GET estos se pueden leer en la URL del navegador y es posible editarlos.

Y el siguiente codigo seria el archivo mostrar-view.html

Codigo del archivo mostrar-view.html

El archivo mostrar-view.html se ejecuta en el codigo de la funcion o metodo “result” y lo que se hace es obtener la informacion y despues mostrarla.

La informacion se obtiene en la funcion “result” y posteriormente se pasa como variables a el archivo mostrar-view.html

{% extends 'djforms1/template.html' %}

{% block mycontent %}

<h1>Mostrar Datos</h1>

<p>Tu nombre: {{name}}</p>
<p>Tu correo: {{email}}</p>
<p>Tu password: {{password}}</p>

{% endblock %}

Como pueden ver los valores de las variables las ponemos en dobles llaves, con el nombre de la variable dentro ejemplo: {{variable}}

Ahora vamos a ver el archivo que ejecuta las vistas, en este caso lo nombre startproject.py

Codigo del archivo startproject.py

El archivo startproject.py contiene las funciones para llamar a las vistas, y en la funcion result esta el codigo para Recibir los valores via GET.

Le agregue unos comentarios al codigo para entender un poco mejor.

from django.http import HttpResponse
from django.shortcuts import render

# Funcion para el metodo principal que muestra el archivo index-view.html que asu vez carga el template template.html
def index(request):
	return render(request, "djforms1/index-view.html", {} )

# Funcion para el metodo result que recibe los datos via GET y despues muestra en el archivo mostrar-view.html que asu vez carga el template template.html
def result(request):
	name = request.GET["name"] # obtener valor de la clave 'nombre' via GET
	email = request.GET["email"] # obtener valor de la clave 'email' via GET
	password = request.GET["password"] # obtener valor de la clave 'password' via GET
	# Una vez obtenido los datos los pasamos en el tercer parametro de la funcion render asociando un nombre y la variable que contiene el valor
	return render(request, "djforms1/mostrar-view.html", {'name':name, 'email': email, 'password':password} )

Por ultimo pero no menos importante es necesario agregar nuestras URLs o Rutas a el archivo urls.py.

Archivo urls.py

Este archivo contiene todas nuestras rutas y la funcion o metodo que deben ejecutar.

from django.contrib import admin
from django.urls import path

from . import startproject

urlpatterns = [
    path("djforms1/", startproject.index, name="index"),
    path("djforms1/result", startproject.result, name="result")
]

Y listo ahora solo nos queda ejecutar el proyecto y ver los resultados.

Ejecutando el proyecto

Para ejecutar el proyecto vamos a usar el comando.

python3 manage.py runserver

Esto abrira el servidor de django en el puerto 8000, abrimos el navegador en http://127.0.0.1:8000/djforms1/ y listo veremos lo siguiente.

Formulario

Resultados

Y listo con esto terminamos el articulo espero les ayude.

Agustin Ramos

Desarrollador de Software

Leave a Reply