好的,所以我正在尝试使用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>
答案 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/