ValueError:int()的基数为10的无效文字:'visits'

时间:2013-06-29 11:28:25

标签: python google-app-engine cookies

我正在通过udacity的CS253,现在就学习cookie和哈希。在这里我必须从响应中获取一个cookie并检查它是否与真实的那个匹配。这是我的代码

self.response.headers['Content-type'] = 'text/plain'
visits = 0
visit_cookie_str = self.request.cookies.get('visits')
  if visit_cookie_str:
      cookie_val = check_secure_val(visit_cookie_str)
      if cookie_val:
          visits = int(cookie_val)

但是当我在appserver上运行时,我收到以下错误:

invalid literal for int() with base 10: 'visits'

我查看了该错误的含义,我在这里遇到了很多关于同一错误的问题,但我还没理解为什么我的代码显示此错误,因为我已经将访问声明为int。< / p>

这些是创建和检查哈希的函数

def hash_str(s):
    return hashlib.md5(s).hexdigest()

def make_secure_val(s):
    return "%s|%s" % (s, hash_str(s))

def check_secure_val(h):
    val = h.split('|')[0]
    if h == make_secure_val(val):
        return val

我还检查了函数check_secure_val是否使用

返回字符串
print check_secure_val("10|d3d9446802a44259755d38e6d163e820").isdigit()

由于

编辑:设置cookie的代码是

new_cookie_val = make_secure_val(str(visits))
self.response.headers.add_header('Set-Cookie', 'visits=%s' % new_cookie_val)

make_secure_val函数返回表单中的字符串(字符串,HASH)。

get函数的所有代码都是这个

def get(self):
    self.response.headers['Content-type'] = 'text/plain'

    visits = 0

    visit_cookie_str = self.request.cookies.get('visits')
    if visit_cookie_str:
        cookie_val = check_secure_val(visit_cookie_str)
        if cookie_val:
            visits = int(cookie_val)
    visits += 1
    new_cookie_val = make_secure_val(str(visits))
    self.response.headers.add_header('Set-Cookie', 'visits=%s' % new_cookie_val)

    if visits > 100:
        self.write("You're the best ever !")
    else:
        self.write("You've been here %s times" % visits)

0 个答案:

没有答案