【问题标题】:Django error: invalid syntax (<string>, line 1)Django 错误:语法无效(<string>,第 1 行)
【发布时间】: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


【解决方案1】:

找出导致异常的字符串。

 try:
      solution = eval(rand_puzz)
 except SyntaxError:
      print rand_puzz

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    相关资源
    最近更新 更多