Python全栈 Web(Flask框架、cookie, session)

简介: Flask、Python、Django、框架、服务器、客户端、浏览器、交互、WEB、Python前端、CSS、JAVA、HTML、H5、PHP、JavaScript、JQuery、分布式开发
cookie:
什么是cookie?
是一种数据存储技术
将一段文本保存在客户端的一种技术 并且可以长时间保存
cookie的使用场合:
记住密码
搜索关键词
在Flask使用cookie
使用 响应对象 来保存cookie到客户端
响应对象:
resp = make_response("响应字符串")
resp = redirect("地址")
响应对象.set_cookie(key, value, max_age)
key:
保存cookie的名称
value:
保存cookie的值
max_age:
保存时间以 s 单位

session 
什么是session
session是保存在服务器为每个浏览器所开辟的一段空

session 在Flask中的实现
配置SECRET_KEY
app.fonfig["SECRET_KEY"] = "YOURGUESS"
使用session:
from flask inport session

1.向session中保存数据
session["key"] = vlaue
2.从session中获取数据
value = session["key"]
3.从session中删除数据
del session["key"]
session 与 cookie
都可以保存数据

保存数据不同
session保存在服务器上
cookie是保存在浏览器上的
保存时间不同
session临时会话保存数据
cookie可以自定义保存时间
安全性问题
session  安全级别较高
cookie   安全级别较低



from flask import Flask, make_response, request, render_template, session, redirect
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']="mysql://root:123456@localhost:3306/flask"
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
app.config['SECRET_KEY'] = 'INPUT A STRING'
db=SQLAlchemy(app)

import pymysql
pymysql.install_as_MySQLdb()

class Users(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer,primary_key=True)
    uname = db.Column(db.String(50),nullable=False)
    upwd = db.Column(db.String(50),nullable=False)
    realname = db.Column(db.String(30),nullable=False)

    def __repr__(self):
        return "<Users %r>" % self.uname

# db.drop_all()
db.create_all()

@app.route('/set_cookie')
def set_cookie():
    # 将响应内容构建成响应对象
    resp = make_response("Set Cookie Success")
    # 保存数据进cookie
    resp.set_cookie('username','sf.zh')
    # 保存数据进cookie并设置max_age
    resp.set_cookie('keywords','Cannon',max_age=60*60*24*365)
    return resp


@app.route('/get_cookie')
def get_cookie():
    # username = request.cookies['username']
    keywords = request.cookies['keywords']
    print('keywords:%s' % (keywords))
    return "get cookie ok"

@app.route('/login',methods=['GET','POST'])
def login():
    if request.method == 'GET':
        # 判断之前是否有成功登录过(id和uname是否存在于cookie上)
        if 'id' in request.cookies and 'uname' in request.cookies:
            return '您已成功登录'
        else:
            # 去往 login.html 模板上
            return render_template('login.html')
    else:
        # 1.接收用户名和密码
        uname = request.form['uname']
        upwd = request.form['upwd']
        # 2.验证用户名和密码是否正确(数据库查询)
        user = Users.query.filter_by(uname=uname,upwd=upwd).first()
        # 3.如果正确的话,判断是否记住密码
        if user:
            resp = make_response('登录成功')
            print(type(user.id))
            # 登录成功
            if 'isSaved' in request.form:
                # 将 id 和 uname 保存进cookie
                m_age = 60*60*24*365
                resp.set_cookie('id',str(user.id),max_age=m_age)
                resp.set_cookie('uname',uname,max_age=m_age)
            return resp
        else:
            # 4.如果不正确的话,则给出提示
            return "登录失败"
        pass

@app.route('/setSession')
def setSession():
    session['username'] = 'sanfeng.zhang'
    return "Set session Success"

@app.route('/getSession')
def getSession():
    username = session['username']
    return 'session值为:'+username

@app.route('/delSession')
def delSession():
    del session['username']
    return "Delete Session Success"

@app.route('/sign_in',methods=['GET','POST'])
def sign_in():
    if request.method == 'GET':
        return render_template('sign_in.html')
    else:
        uname = request.form['uname']
        upwd = request.form['upwd']
        user = Users.query.filter_by(uname=uname,upwd=upwd).first()
        if user:
            # 登录成功,将信息保存进 session
            session['id'] = user.id
            session['uname'] = user.uname
            return redirect('/index')
        else:
            # 登录失败,回到sign_in.html
            return render_template('sign_in.html')

@app.route('/index')
def index():
    # 判断用户是否登录成功
    if 'id' in session and 'uname' in session:
        uname = session['uname']
    return render_template('index.html',params=locals())

@app.route('/sign_out')
def sign_out():
    if 'id' in session and 'uname' in session:
        del session['id']
        del session['uname']
    return redirect('/index')

@app.route('/create_xhr')
def create_xhr():
    return render_template('xhr.html')



if __name__ == '__main__':
    app.run(debug=True)


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
11月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
748 1
|
数据采集 人工智能 测试技术
Python有哪些好用且实用的Web框架?
Python 是一门功能强大的编程语言,在多个领域中得到广泛应用,包括爬虫、人工智能、游戏开发、自动化测试和 Web 开发。在 Web 开发中,Python 提供了多种框架以提高效率。以下是几个常用的 Python Web 框架:1) Django:开源框架,支持多种数据库引擎,适合新手;2) Flask:轻量级框架,基于简单核心并通过扩展增加功能;3) Web2py:免费开源框架,支持快速开发;4) Tornado:同时作为 Web 服务器和框架,适合高并发场景;5) CherryPy:简单易用的框架,连接 Web 服务器与 Python 代码。这些框架各有特色,可根据需求选择合适的工具。
788 14
|
数据采集 Web App开发 存储
打造高效的Web Scraper:Python与Selenium的完美结合
本文介绍如何使用Python结合Selenium,通过代理IP、设置Cookie和User-Agent抓取BOSS直聘的招聘信息,包括公司名称、岗位、要求和薪资。这些数据可用于行业趋势、人才需求、企业动态及区域经济分析,为求职者、企业和分析师提供宝贵信息。文中详细说明了环境准备、代理配置、登录操作及数据抓取步骤,并提醒注意反爬虫机制和验证码处理等问题。
817 1
打造高效的Web Scraper:Python与Selenium的完美结合
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
JSON 安全 中间件
Python Web 框架 FastAPI
FastAPI 是一个现代的 Python Web 框架,专为快速构建 API 和在线应用而设计。它凭借速度、简单性和开发人员友好的特性迅速走红。FastAPI 支持自动文档生成、类型提示、数据验证、异步操作和依赖注入等功能,极大提升了开发效率并减少了错误。安装简单,使用 pip 安装 FastAPI 和 uvicorn 即可开始开发。其优点包括高性能、自动数据验证和身份验证支持,但也存在学习曲线和社区资源相对较少的缺点。
906 15
|
存储 安全 数据安全/隐私保护
Cookie 和 Session 的区别及使用 Session 进行身份验证的方法
【10月更文挑战第12天】总之,Cookie 和 Session 各有特点,在不同的场景中发挥着不同的作用。使用 Session 进行身份验证是常见的做法,通过合理的设计和管理,可以确保用户身份的安全和可靠验证。
1093 156
|
存储 前端开发 Java
【SpringMVC】——Cookie和Session机制
获取URL中参数@PathVarible,上传文件@RequestPart,HttpServerlet(getCookies()方法,getAttribute方法,setAttribute方法,)HttpSession(getAttribute方法),@SessionAttribute
939 11
|
缓存 Java Spring
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
文章比较了在Servlet和Spring Boot中获取Cookie、Session和Header的方法,并提供了相应的代码实例,展示了两种方式在实际应用中的异同。
1964 3
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
|
存储 缓存 数据处理
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
本文介绍了PHP会话控制及Web常用的预定义变量,包括`$_REQUEST`、`$_SERVER`、`$_COOKIE`和`$_SESSION`的用法和示例。涵盖了cookie的创建、使用、删除以及session的工作原理和使用,并通过图书上传的例子演示了session在实际应用中的使用。
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07

推荐镜像

更多