2 回答
TA贡献1807条经验 获得超9个赞
首先,我将模板表单方法从“GET”更改为“POST”,并添加 {% csrf_token %}。
其次,我将视图更改为两部分:
第一部分是当用户第一次输入 game2.html(GET 请求)时,它将向用户呈现 game2.html。
第二部分基本上是我之前所做的,但这次我添加了一个响应用户 POST 请求的案例,并从那里重定向到 Correct.html 或 Correct.html 或 Correct.html
游戏2.html
{% extends "morse_logs/base.html" %}
{% block content %}
<title>GAME 2</title>
<div>
<h1>GAME 2</h1>
<h2>2 + 2 = ?</h2>
<form method="POST">
{% csrf_token %}
<input type="number" id="ans2" name="ans2"/><br><br>
<input type="submit" name="Submit"/>
</form>
</div>
{% endblock content %}
views.py
@login_required()
def game2(request):
"""The Game2 page"""
if request.method == "GET":
return render(request, 'morse_logs/game2.html')
elif request.method == "POST":
if request.user and not request.user.is_anonymous:
user = request.user
user_score, created = userScore.objects.get_or_create(user=user)
ans2 = request.POST.get('ans2', '') #fetch the POST data from template
if ans2 == '':
ans2 = 0
ans2 = int(ans2)
if ans2 == 4:
# user's score declared in model increase 5points
# display correct and 5 points added to user
user_score.score += 5
user_score.save()
return redirect(reverse('morse_logs:correct'))
else:
# user's score declared in model has no point
# display incorrect and 0 point added to user
return redirect(reverse('morse_logs:incorrect'))
TA贡献2021条经验 获得超8个赞
你应该改变你的
重定向('morse_logs:不正确的.html')
到
重定向('url_name')
如果您使用 django 版本 >2.0,还请删除 app_name
- 2 回答
- 0 关注
- 135 浏览
添加回答
举报