Saltar al contenido

¿Cómo generar un número aleatorio en una plantilla Django python?

Agradecemos tu apoyo para compartir nuestros posts con relación a las ciencias de la computación.

Solución:

No hay una forma integrada de hacer esto. Si todo lo que necesita es un valor aleatorio, una vez, y no quiere pasar eso desde una función de vista, supongo que una etiqueta de plantilla personalizada es el camino.

En cualquier aplicación adecuada, cree un archivo templatetags/random_numbers.py (y un vacío templatetags/__init__.py si no tiene ninguna otra etiqueta de plantilla personalizada) con el siguiente contenido:

import random
from django import template

register = template.Library()

@register.simple_tag
def random_int(a, b=None):
    if b is None:
        a, b = 0, a
    return random.randint(a, b)

Luego, en tu plantilla, úsalo así:

% load random_numbers %

A random value, 1 ≤ % random_int 1 10 % ≤ 10.

Más documentación sobre etiquetas personalizadas: https://docs.djangoproject.com/en/1.11/howto/custom-template-tags/

Si por alguna razón no desea crear una etiqueta personalizada o pasar el valor de la función de vista, puede probar esto:

en tu plantilla:

 request.user.your_model.your_randint 

en cualquier archivo model.py de su aplicación:

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
from random import randint

class Your_model(models.Model):
    user = models.OneToOneField(User,
                                on_delete=models.CASCADE,
                                primary_key=True)
    @staticmethod
    def your_randint():
        return str(randint(0, 2048))

    @receiver(post_save, sender=User)
    def create_latest_inputs(sender, instance, created, **kwargs):
        if created:
            Your_model.objects.create(user=instance)

El último método es necesario para crear automáticamente Your_model cada vez que se crea un modelo de usuario.

Por cierto, no tiene que crear un campo uno a uno con el usuario, puede agregar esto static método a cualquier modelo, que se envió a una página.

PD Es posible que deba ejecutar migraciones

Por ahora (Django 3) puedes hacer algo como esto, doc

view.py

list_for_random = range(100)
return render(...'list_for_random': list_for_random,) 

Luego, en la plantilla solo

 random 

Sección de Reseñas y Valoraciones

Recuerda que tienes la capacidad de decir si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *