html - Django 视图/html 输入 - 当没有表单更新时,我可以使用提交强制更新吗?
问题描述
当没有表单更新出现时,是否可以使用表单本身的 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 中创建表单,然后在视图中创建表单的实例吗?如果是这样,我如何确保页面会刷新?
可以在页面本身中适当地完成吗?
顺便说一句,此应用程序是让用户从列表中选择一个项目,随机位于选择的顶部,然后单击以进行实际选择,或者重复单击以获取他们想要的任意数量的随机建议。
谢谢你的帮助
菲尔
解决方案
通常 Django 不会缓存你的视图,任何GET
请求都应该返回一个新的响应。出于某种原因,您似乎看到了缓存的响应。这可能是您的浏览器,或介于两者之间的某个服务器(nginx?)。
如果你想防止 Django HTTP 响应被缓存,最简单的方法是用装饰器装饰它never_cache
:https://docs.djangoproject.com/en/3.0/topics/http/decorators/#django。 views.decorators.cache.never_cache
推荐阅读
- c# - 如何将项目列表添加到多列 DataGridView?
- reactjs - Typescript`可以用约束'{}'的不同子类型和react-final-form实例化
- html - 如何在 python selenium webdriver 中选择树节点跨度标记值?
- python - Pandas - 用增加的后缀标记列表中的重复元素
- android - 安卓进程
- python - 在 Python 3.8 上安装 XGBoost 的问题
- java - 拒绝值 [org.springframework.web.multipart.support
- c# - Log4Net c# AdoNetAdapter 附加字段
- persistence - 当订阅者应用程序关闭时,emqttd 未获取同一主题中的所有消息
- javascript - 优化具有多个子节点的元素上的平移动画