学习理解篇1

一、关于如何使用cookie

二、关于使用数据库

三、当面临这些问题时

 

一、关于如何使用cookie

1、设置cookie

resp = make_response(redirect('/userCenter'))
resp.set_cookie('username', username)
return resp

设置cookie, 默认有效期是临时cookie,浏览器关闭就失效

同时,设置时有许多参数,如下

Response.set_cookie( key, //键 value='', //值 max_age=None, //秒为单位的cookie寿命,None表示http-only expires=None, //失效时间,datetime对象或unix时间戳 path='/', //cookie的有效路径 domain=None, //cookie的有效域 secure=None, httponly=False)

因此也能这样设置:

resp.set_cookie("Name2", "Python1", max_age=3600)

2、删除cookie

resp = make_response(redirect('/login'))
resp.delete_cookie('username')
return resp

格式相似,注意第一行的路由是设置时使用的路由

3、获取cookie

username = request.cookies.get('username')

这里要提及的是,第一:cookie与session的区别

cookie

cookie的出现就是为了解决这个问题,cookie本质是一种存储机制,为了存储用户相关的信息。

第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。

第一次访问后,浏览器会自动保存服务器发过来的cookie数据,以便再次请求这个网站时让服务器"记住"用户!

cookie特性

cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。 cookie有有效期:服务器可以设置cookie的有效期,以后浏览器会自动的清除过期的cookie。 cookie有域名的概念:只有访问同一个域名,才会把之前相同域名返回的cookie携带给服务器。也就是说,访问谷歌的时候,不会把百度的cookie发送给谷歌。

session

我们不可能把用户的个人信息直接存储到cookie中,那样太不安全了! 为了解决这种问题,session就诞生了~

不同的是,cookie是存储在本地浏览器,session是一个思路、一个概念、一个服务器存储授权信息的解决方案,不同的服务器,不同的框架,不同的语言有不同的实现。总之,它是为了解决cookie存储数据不安全的问题的。

Flask中的session机制是将session信息加密,然后存储在cookie中!!!!

第二:如何编写代码时调用cookie

if request.method == 'GET':
   if request.cookies.get('username'):#如果能获取到cookie保存的信息
       return redirect('/userCenter')#重定向到另一个路由进行验证
   else:
       return render_template('login.html')#重定向到登录界面

如上,看看请求的方式是"get"还是"post",再进一步进行验证

二、关于使用数据库

这里主要讲一些单个问题

1、连接数据库

(1)sqlite3.connect(“要连接的数据库”) 会默认检测有没有数据库,如果没有的话就会建立一个。

conn = sqlite3.connect('database.db')
cursor = conn.cursor()# 获取游标对象

(2)填写具体详细信息

db=pymysql.connect(
   host='127.0.0.1',
   user='123456',
   password='123456',
   database='students',
  )
cursor = db.cursor()

2、当使用sql语句时有变量怎么办

cursor.execute("SELECT password FROM user WHERE username = ?", (username, ))

用图上方法,以"?"代替

3、一些函数的认识

result = cursor.fetchone()# 获取一行数据
data1 = cursor.fetchall()  # 得到数据库中所有数据 是一个二维元组

三、当面临这些问题时

1、这样写更简便

data = request.form
username = data.get('username')
password = data.get('password')

2、当要检测账号和密码是否存在时

if not username or not password:#检测账号和密码是否存在
   return render_template('login.html', message='Invalid username or password')

这里的message与前端的HTML页面的message相对应

posted @ 2024-05-07 18:36  WDS望尘  阅读(44)  评论(0)    收藏  举报