如何在Template Django python中生成一个随机数?

时间:2016-04-20 12:40:17

标签: python html django

好的,所以我正在尝试使用Django / Python创建一个随机数生成器网页。我需要完成的是以某种方式在我的HTML模板文件中使用python代码,除了我无法找到如何做到这一点。

<h1 style="font-size:50px;line-height:20px;color:rgb(145,0,0);font-    family: Arial Black, Gadget, sans-serif"></h1>
<h2 style="line-height:10px;color:rgb(140,140,140)"></h2>
<h3 style="font-size:40px;line-height:10px;font-family: Arial Black, Gadget, sans-serif"></h3>
<body style="background-color:rgb(255,239,154)"></body>
<!--Style placeholders-->


<h1 style="text-align:center;position:relative;top:20px">
Test Site
</h1>

<!--Reroll icon-->
<h1 style="text-align:center;position:relative;top:20px">
<input type='image' style='width:60px;height:56px;' src='../../static/polls/dice.png' alt='Re-roll'
onclick='location.reload();' value='Roll' /></h1>

4 个答案:

答案 0 :(得分:7)

没有内置方法可以做到这一点。如果您只需要一个随机值,一次,并且您不想从视图函数传递它 - 我想自定义模板标记就是这样。

在任何适当的应用程序中,使用以下内容创建文件templatetags/random_numbers.py(如果您没有其他自定义模板标记,则为空templatetags/__init__.py):

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)

然后,在您的模板中使用它:

{% load random_numbers %}

<p>A random value, 1 ≤ {% random_int 1 10 %} ≤ 10.</p>

有关自定义标记的更多文档:https://docs.djangoproject.com/en/1.11/howto/custom-template-tags/

答案 1 :(得分:1)

目前(Django 3),您可以执行以下操作,doc

view.py

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

然后,仅在模板中

{{ list_for_random | random }}

答案 2 :(得分:0)

如果由于某种原因您不想创建自定义标签或不想通过view函数传递值,则可以尝试以下操作:

在您的模板中:

{{ request.user.your_model.your_randint }}

在应用程序的任何model.py文件中:

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)

每次创建用户模型时,都需要最后一种方法自动创建Your_model。

顺便说一句,您不必与用户创建一对一字段,您可以将此静态方法添加到已发送到页面的任何模型中。

P.S。您可能需要运行迁移

答案 3 :(得分:-2)

解决方案 由于您的所有意见,我设法弄明白,这两个指南特别有用: http://dev.splunk.com/view/webframework-djangobindings/SP-CAAAEMR https://docs.djangoproject.com/en/1.9/topics/http/shortcuts/