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.