python - html中的多个按钮,相同的视图,不同的值
问题描述
我试图让我的 html 在 HTML 页面上显示 session.counter。计数器应按一个随机数递增,其递增范围有 4 个不同的选项(基于按钮)。到目前为止,我将他们的所有操作都路由到同一个视图,但我不确定如何将值编码到视图中!我可以在视图中嵌套多个 if 检查吗?如果是这样,我是否需要在每次检查后立即重定向,还是可以在 if-checks 之后重定向?编辑:我尝试添加隐藏输入以使我的视图更有效。我还是个新手,所以如果您的反馈越详细,我就越容易实施更改并理解原因!
这是html:
<div id="goldCount">
<h2>Gold Count: {{ session.request.goldCount }}</h2>
</div>
<div id="goldNode">
<h2>Blood Lotus Master</h2>
<h5>(earns 50 to 200 gold coins)</h5>
<form action='/process_gold' method="post">
{% csrf_token %}
<input type="hidden" name="earn" value="reap">
<button type="submit" name="reap">収める - Reap</button>
</form>
</div>
<div id="goldNode">
<h2>Shadow Dance Troupe</h2>
<h5>(earns 35 to 50 gold coins)</h5>
<form action='/process_gold' method = "post">
{% csrf_token %}
<input type="hidden" name="earn" value="weave">
<button type = "submit" name = "weave">織る - Weave</button>
</form>
</div>
<div id="goldNode">
<h2>Necromancy</h2>
<h5>(earns -200 to 200 gold coins)</h5>
<form action='/process_gold' method="post">
{% csrf_token %}
<input type="hidden" name="earn" value="summon">
<button type = "submit" name="summon">召喚 - Summon</button>
</form>
</div>
<div id="goldNode">
<h2>Clan War!</h2>
<h5>(earns -2000 to 2000 gold coins)</h5>
<form action='/process_gold' method="post">
{% csrf_token %}
<input type="hidden" name="earn" value="summon">
<button type="submit" name="war">影の戦争 - Shadow War</button>
</form>
</div>
这是views.py文件
def index(request):
if 'goldCount' not in request.session:
request.session['goldCount'] = 0
return render(request, 'index.html')
def process_gold(request):
reap = random.randint(50,200)
weave = random.randint(35,50)
summon = random.randint(-200,200)
war = random.randint(-2000,2000)
print(request.POST)
if request.POST['earn'] == 'reap':
request.session['goldCount'] += random.randint(50,200)
if request.POST['earn'] == 'weave':
request.session['goldCount'] += random.randint(35,50)
if request.POST['earn'] == 'summon':
request.session['goldCount'] += random.randint(-200,200)
if request.POST['earn'] == 'war':
request.session['goldCount'] += random.randint(-2000,2000)
return redirect('/')
解决方案
如果要发送goldCount
到 HTML,则需要使用 render_template 而不是重定向。存储goldCount
进入会话,然后只需调用{{request.session.goldCount}}
您的 HTML。
此外,正确的 if 语句是:
if 'goldCount' not in request.session:
request.session['goldCount'] = 0
推荐阅读
- android-studio - 找不到 JavaToKotlinConversionProvider
- mysql - MySQL 5.6 比 MySQL 8 快
- firebase - Firebase - 获取 OAuth 凭据以进行 REST 身份验证
- c++ - 为什么控制台会覆盖输出?
- jmeter - 需要在 jmeter scipt 中处理重复会话
- c# - 如何在自定义编辑器的嵌套 ReorderableList 中选择元素?
- html - HTML 标签从浏览器或操作系统继承其默认样式?
- java - Apache POI XWPFRun isBold 不检测粗体
- python-3.x - 在 python 深度学习中构建图像推荐系统的最佳模型
- mongodb - 如何导出带有gzip文件扩展名的mongodb数据库