【发布时间】:2020-05-19 07:00:36
【问题描述】:
当没有表单更新出现时,是否可以使用表单本身的 html 表单强制刷新模板? 这是一个我认为是有效用例的简单示例。
一个视图生成一个随机数:-
def test_random_view(request):
varid=randint(1,1000)
context={
"Randomid": varid
}
return render(request ,'test_random.html', {'context': context})
一个简单的页面应该会生成这个随机数:-
This doesn't work<br><br>
Here is a random number: <br>
{{ context.Randomid }}
<form method='get' action=''>
<input type="text" name="input" value="Here is an empty field"><br>
<input type="submit" value="Update the random number"><br>
</form>
但点击提交按钮时,随机数不会更新。我假设这是因为它识别出没有对表单进行更新,因此它不会传递回视图以生成新的随机数。 您可以通过将随机数传递给文本输入来“欺骗”它:-
This sort of works<br><br>
Here is a random number: <br>
<form method='get' action=''>
<input type="text" name="input" value={{ context.Randomid }}><br>
<input type="submit" value="Update the random number"><br>
</form>
但是除了强制表单识别更新并传回视图之外,没有其他理由存在此文本字段。
有什么更好的方法来做到这一点?
我应该在 forms.py 中创建表单,然后在视图中创建表单的实例吗?如果是这样,我如何确保页面会刷新?
是否可以在页面本身中适当地完成?
顺便说一句,此应用程序是让用户从列表中选择一个项目,随机位于选择的顶部,然后单击以进行实际选择,或者重复单击以获取他们想要的任意数量的随机建议。
感谢您的帮助
菲尔
【问题讨论】:
-
如果我猜对了,你需要一个
generate random按钮,和一个submit按钮,你为什么不用JS来生成随机数,因为整个random thing发生在客户端?然后有一个单独的提交按钮,将这个号码发送到您的后端。 -
谢谢@xpy。我不知道任何JS。随机数需要对应于数据模型中的 id 字段,因此随机检索对象。所以实际的随机数来自一个单独的视图
def random_cons_view(): #returns a random constituency id varrandto=constituency.objects.all().count() varrandid=randint(1,varrandto) return varrandid所以,我在这里使用 Django 来控制随机数的范围,这似乎有效地包含在视图本身中
标签: html django forms view form-submit