我对方法 eval 有疑问,我最初想创建一个单独的 Def 来处理来自表单的用户输入答案。问题是该方法不起作用,因为我不知道如何将局部变量传递给另一个 def,因为无论如何,另一个函数中的随机值会有所不同。
本质上,ran_puzz 从数据库中提取一个随机谜题,其值类似于“2+2”等。
rand_puzz = Puzzles.objects.get(id = random_index).puzzle
所以我想,因为我不知道如何将 rand_puzz 传递给另一个 def,所以我决定将变量和逻辑保留在 def 中称为“play”并返回多个值,例如“message and ran_puzz”
如果您看到“if eval(rand_puzz)== user_sub_ans;”行 // 这会导致语法错误
网址:
url(r'^play/$', 'mathgame3.views.play'),
VIEWS: def play(请求)
if request.user.is_authenticated():
number_of_records = Puzzles.objects.count()
random_index = int(random.random()*number_of_records)+1
rand_puzz = Puzzles.objects.get(id = random_index).puzzle
user_sub_ans = request.GET['answer']
if eval(rand_puzz)== user_sub_ans;
message = 'correct'
else:
message = 'incorrect'
return render(request, 'play.html', {'rand_puzz': rand_puzz, 'message': message})
else:
return render_to_response('home.html')
Html:只是用户输入谜题答案的表单中的一些代码。
<form action="/play/" method = "get">
<table style="margin-left:auto; margin-right:auto; width:auto;">
<table style="margin-left:auto; margin-right:auto; width:auto; border:solid 1px">
<tr><td><label for="username">Question:</label></td>
<td>{{rand_puzz}}</td></tr>
<tr><td><label for="answer">Answer:</label></td>
<td><input type="number" name="answer" value="" id="answer"></td></tr>
<td> The answer is: {{message}}</td></tr>
<tr><td></td><td><input type="submit" value="Submit"/></td></tr>
</table>
</table>
</form>
我将不胜感激。