【发布时间】:2013-08-13 22:58:05
【问题描述】:
def play(request):
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
solution = eval(rand_puzz)
if 'a' in request.GET:
a = request.GET['a']
if a == request.GET['solution']:
message = "correct"
return render(request, 'play.html', {'rand_puzz':rand_puzz,'solution':solution,'message':message})
else:
message = "incorrect"
return render(request, 'play.html', {'rand_puzz':rand_puzz,'solution':solution,'message':message})
else:
message = 'play the game'
return render(request, 'play.html', {'rand_puzz':rand_puzz,'solution':solution,'message':message})
else:
return render_to_response('home.html')
所以我收到此错误:无效语法(第 1 行)。该页面最初可以工作,然后会发生这种情况。我完全被这个错误的含义弄糊涂了,任何帮助都将不胜感激
【问题讨论】:
-
可能是 eval 评估有问题,您能否发布一个触发该错误的 rand_puzz 示例?
-
if a == request.GET['solution']并且以下块的缩进不正确。你能发布错误的整个追溯吗? -
这是回溯:dpaste.com/1342343
-
所以 rand_puzz 拼图将包含类似:2 + 2
-
这并不能解决您的问题,但是从数据库中获取随机记录的正确方法是
rand_puzz = Puzzles.objects.order_by('?').only('puzzle')[0]。你现在的做法,如果你曾经删除过一条记录;您可能会遇到选择的随机索引在数据库中不存在的情况;这将导致Puzzles.DoesNotExist异常。另外,你还应该使用if request.GET.get('a') and request.GET.get('a') == request.GET.get('solution'):
标签: django django-views