python3+flask 开发web(一)

2023-10-29

1、环境准备

1)安装Python:https://www.python.org/

2)安装python ide,pycharm:https://www.jetbrains.com/pycharm/

3)安装flask:安装好了python,电脑就自动安装了pip,在cmd中执行命令:pip install flask

2、写代码:

1)helloword:

from flask import Flask
app = Flask(__name__)     #创建一个wsgi应用

@app.route('/')           #添加路由:根
def hello_world():
    return 'Hello World!' #输出一个字符串

if __name__ == '__main__':
    app.run(debug=True)             #启动app的调试模式


​

执行后:

在浏览器的地址栏打开:http://127.0.0.1:50000/这个url,显示如下:

本例中app是Flask类的一个实例,在实例化过程中传递了一个参数name,Flask通过这个参数识别app是模块级别还是包级别的。实际上app符合相关接口,它是一个WSGI应用。

有了app对象以后,它就成为了一个中心节点,把所有的URL规则、视图函数、模板配置等连接起来,最终形成一个Web应用。

使用@app.route修饰函数创建一个URL规则,直接在被修饰的函数中写出处理该URL要做的事情。使用过PHP、ASP的童鞋可能刚开始不习惯这种URL命名规则,因为最早使用脚本开发Web应用的时候,一个文件就会对应一个URL。
2)字符串

​
from flask import Flask


app=Flask(__name__)


@app.route('/')
def hello_word():
    return '<h1>Hello Word!</h1>'

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

​

执行结果:

3)json

​
​
​
from flask import Flask
import json



app=Flask(__name__)


@app.route('/json')
def do_json():
    hello = {"name":"stranger", "say":"hello"}
    return json.dumps(hello)


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

​

​

​

执行结果;

4)http状态码:

​
​
​
​
from flask import Flask
import json



app=Flask(__name__)


@app.route('/status_500')
def status_500():
    return "hello", 500



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

​

​

​

​

 执行结果:

5)http头:

from flask import Flask
from flask import make_response



app=Flask(__name__)

@app.route('/set_header')
def set_header():
    resp=make_response('<h1>This document has a modified header!</h1>')
    resp.headers['X-Something']='A value'
    resp.headers['Server']='My special http server'
    return resp




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

​

​

​

​

​

执行结果:

6)cookie:

什么是cookie:

什么是cookie?如果单单从数据结构的角度来说,它可以被理解成用来保存数据的一个dictionary,由一组组键值对组成.如果从作用上来说,我们知道Http协议是一种无状态的协议.什么叫无状态呢,就是本次的客户端请求不会保留上一次客户端请求的状态,简单点说就是这样会要求我们每次在浏览器中点开一个网站的链接都会输一次账户和密码.cookie就是用来解决这个问题的.

        为了解决上述问题,我们第一次登录web服务器,服务端就会在它的响应中的Set-Cookie字段中发送一些键值对,这就包括一个Session ID以及其他一些信息(也包括我们自定义的cookie中的键值对),并告诉客户端在本地缓存这个cookie.然后客户端以后进行链接时每次都会发送这个Session ID,服务器一看是哪个Session ID就知道是哪个客户端发起的链接了,就不会要求我们再次输账户和密码验证了.

        我们在flask中自定义cookie,实际上就是在响应Response的Set-Cookie字段中增加我们自定义的键值对.而获取cookie,就是通过请求Request中通过键获取其对应的值.

(1)设置cookie和获取cookie

from flask import Flask
from flask import make_response
import datetime
from flask import request

app=Flask(__name__)

@app.route('/set_cookie') #设置cookie
def set_cookie():
    response=make_response('<h1>This document carries a cookie!</h1>')
    outdate=datetime.datetime.today()+datetime.timedelta(days=30)  #cookie的有效时长30天
    response.set_cookie('username','evancss',expires=outdate)
    return response

@app.route('/get_cookie')    #获取cookie
def get_cookie():
    name=request.cookies.get('username')
    return name

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

执行结果:

set_cookie

get_cookie

注意cookie的时效性:我们在浏览器上设置cookie的有效时长优先级要高于我们在代码中设置的

(2)删除cookie常用的方法:

1可以通过在浏览器中设置来清除cookie.

2使用Response的set_cookie进行清除

@app.route('/del_cookie')
def del_cookie():
    response=make_response('delete cookie')
    response.set_cookie('username','',expires=0)
    return response

 

 

3使用Response的 delete_cookie方法.

def del_cookie2():
    response=make_response('delete cookie2')
    response.delete_cookie('username')
    return response

 

7)重定向:

​
​
​
from flask import Flask
from flask import redirect



app=Flask(__name__)


@app.route('/redir')
def redir():
    return redirect('https://www.baidu.com')




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

​

​

​

执行结果:

用fiddler抓包看看:

8)abort:

​
​
​
from flask import Flask
from flask import abort



app=Flask(__name__)


@app.route('/user/<id>')
def get_user(id):
    if int(id)>10:
        abort(404)
    return '<h1>Hello,%s</h1>'%id




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

​

​

​

执行结果:

id=22

id=2

遇到的问题:新建项目的选择解释器和location的时候注意一下

参考博文:https://blog.csdn.net/langkew/article/details/51594880

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3+flask 开发web(一) 的相关文章

  • 使用Python实现K均值聚类算法

    使用Python实现K均值聚类算法 K均值聚类算法是一种经典的无监督学习算法 它将数据集分为K个簇 每个簇中的数据点与同一簇中心点的距离最小 不同簇的数据点之间的距离较大 该算法常用于数据挖掘 图像处理等领域 以下是其优缺点和Python实
  • Python NumPy 数组索引

    前言 NumPy Numerical Python的缩写 是一个开源的Python科学计算库 使用NumPy 就可以很自然地使用数组和矩阵 NumPy包含很多实用的数学函数 涵盖线性代数运算 傅里叶变换和随机数生成等功能 本文主要介绍Pyt
  • python菜鸟学习Day1(数据类型)

    第一节 数据类型 int 整型 python2中有int long python3中只有int float 浮点型 string 字符串型 bool 布尔型 变量命名 字母 数字 下划线 数据不能开头 大小写敏感 不能和系统关键字 函数名
  • 苏宁图书爬虫第一版

    最近一直在忙于工作 当我知道这些都是借口 毕竟某些博主大佬深夜还在更新订阅号更新微博 或许这就是自制力的差距吧 不啰嗦了 今天要写的主要是一篇关于如何爬取 苏宁图书 当然只是半成品 但是大部分问题都已经解决 在这里记录一下发生过的问题 以免
  • 用python写个类似浏览器的下载器,超简单的

    以前没有学习python时 想要下载一个网上的文件 就只能把浏览器打来 找到文件的下载链接 将地址放进去 现在学了python后 才发现
  • Python学习-----文件操作(读写定位篇)

    目录 前言 1 打开文件 open 关闭文件 close 2 文件的读取 文件变量名 f 1 整体读取 read 2 读取一行 readline 3 读取多行 readlines 3 文件的写入 文件变量名f write 4 判断文件的可读
  • python自动化课程笔记(十三)单例模型、代码性能、抛出异常

    单例模型 重要 class Person object instance None is first True def new cls args kwargs 如果类属性 instance的值为None 创建一个对象 并赋值为这个对象的引用
  • Python: 装饰器和语法糖

    一 Python 装饰器 Python 装饰器本身就是一个函数 它的作用是装饰一个其他的函数 但是不改变原有的程序功能 还要增添新的功能 调用函数时的接口没有变化 比如 装修一个房子 如果不隔音 我在墙上加一层隔音板 却不能把墙拆了 换成隔
  • Python 学习笔记(1):心历路程,print()函数,变量和赋值

    也不知道从什么时候开始 对python这个语言有兴趣了 可能是公众号 广告推给我的吧 对python这个语言的印象不错 哈哈 之前大学的时候 对编程就比较感兴趣 反应也还可以 但毕竟不是专门学的 能力不够 毕业之后从事了与专业不相关的工作
  • Python学习笔记 - 阿里云天池Python训练营打卡(3)

    目录 1 阿里云天池Python教程链接 3 2 函数 2 1 函数定义 2 2 函数文档 2 3 help方法 2 4 函数参数 2 5 函数的返回值 2 6 变量作用域 2 7 模块 函数的导入 3 Lambda 匿名函数 3 1 La
  • python水仙花数

    题目 打印出所有的 水仙花数 所谓 水仙花数 是指一个三位数 其各位数字立方和等于该数本身 例如 153是一个 水仙花数 因为153 1的三次方 5的三次方 3的三次方 def narcissus narcissus number grou
  • Python的学习过程中not enough values to unpack (expected 2, got 1)解决方案

    这是一篇在自学过程中debug的笔记 愿我们一同进步 问题描述 跟着小甲鱼一起学习Python 在学习到 文件 的时候有一个代码任务 内容是根据两个人物之间的三段对话对话进行分割提取操作 运行时报错 主要报错为not enough valu
  • python基础----03-----if语句、while、for循环、range语句、continue和break

    一 布尔类型和比较运算符 1 1 布尔类型和比较运算符 定义变量存储布尔类型数据 变量名称 布尔类型字面量 布尔类型不仅可以自行定义同时也可以通过计算的来 也就是使用比较运算符进行比较运算得到布尔类型的结果 在C C 中 比较运算符称之为关
  • python自动化课程笔记(六)函数

    函数 类 模块 包 项目 包与文件夹的区别在于 包中有很多模块 和init文件 函数 提高编码的效率及代码的重用 把独立功能的代码块组成一个小模块 def printInfo 定义一个函数 print 10 print 人生苦短 我用pyt
  • python3读取excel文件只提取某些行某些列的值

    今天有一位同学给了我一个excel文件 要求读取某些行 某些列 然后我试着做了一个demo 这里分享出来 希望能帮到大家 首先安装xlrd pip3 install xlrd 然后上代码 import numpy as np import
  • GIS栅格平均值计算

    GIS中批量计算tif栅格文件平均值 coding UTF 8 import arcpy import os inws r C Users DELL Desktop 新建文件夹 arcpy env workspace inws raster
  • Python入门之print()函数

    Python利用print 函数将结果输出到标准输出设备 即显示器 上 print 函数主要有以下几个参数 1 print objects objects 0个或多个输出对象 print 拥有0个参数 输出换行 print 函数拥有一个参数
  • python中sqlite3对数据库的增删改查

    1 python API的介绍 1 connection 数据库连接对象 连接对象 建立python客户端与数据库的网络连接 创建方法 sqlite3 connect 参数 2 cursor 游标对象 2 增删改查的流程 select语句
  • Python--内建函数大全

    Python 解释器内置了许多函数和类型 列表如下 按字母排序 省略了几个我没用过或者不常用的 内建函数表 abs delattr hash memoryview set
  • 将本地的代码上传到github完整版本

    1 注册github账号 2 安装git https git for windows github io 3 进入Github首页 点击New repository新建一个项目 Public Private 仓库权限 公开共享 私有或指定合

随机推荐

  • python配置opencv、mediapip环境

    1 先安装python再安装pycharm以后 2 网上有的教程是在pycharm下选择虚拟的python环境下创建项目 并在设置中添加安装需要的环境 我使用这个方法opencv安装一直失败 所以选择使用命令行配置 3 环境的安装包路径在下
  • 快手引流需要钱吗?快手免费引流怎么做?

    其实做引流推广无非就是两种方式 付费引流 免费引流 付费引流就比较简单 有钱就行 但是免费引流说的就比较简单 真正执行起来 需要时间去沉淀 很多人就是因为坚持不下来 就认为免费引流不可能成功引流 所以这也是为什么这么多人一直都在找引流方法
  • 每天一个秃头小技巧-github 上找项目

    注 本内容基于韩顺平老师视频 一 watch start fork fork代表分支 分支越多说明喜欢你的项目并在上面开发 二 about topic readme 三 github开源项目搜索 1 找一个基于springboot的项目 i
  • 华为OD机试真题 Java 实现【机房布局】【2023Q1 200分】

    一 题目描述 小明正在规划一个大型数据中心机房 为了使得机柜上的机器都能正常满负荷工作 需要确保在每个机柜边上至少要有一个电箱 为了简化题目 假设这个机房是一整排 M表示机柜 I表示间隔 请你返回这整排机柜 至少需要多少个电箱 如果无解请返
  • termux-x11教程

    小粉丝已经求稿两个星期了 不写是不行了 termux x11 是Termux的一个图形化项目 官方是这么介绍的 A Termux add on app providing Android frontend for Xwayland 安装工具
  • MacBook【m1】创建django虚拟环境

    1 为什么使用虚拟环境 cd miniforge3我们在做开发时可能会同时开发多个项目 这些项目可能会依赖于不同的python环境 比如有的用到3 6有的用到3 7 这时我们创建不同版本的python 放到虚拟环境中给不同的项目分别提供其所
  • ReactJs实现树形结构的数据显示的组件

    1 该组件树形显示数据 2 组件中数据的请求方式为fetch方式 3 点击对应的数据前面的小三角 fetch请求改数据下对应的子数据 并展开该节点 4 将该组件的js less文件放到kpiTree目录下 在kpiTree目录下创建imag
  • Vue 路由

    1 vue router的理解 vue router是vue的一个插件 专门用来实现SPA应用 SPA也就是单页Web应用 特点是 整个应 用只有一个完整的页面 点击页面中的导航链接不会刷新页面 只会做页面的局部更新 数据需要 通过ajax
  • printf打印浮点数,%e %f %g的区别

    打印浮点数有 e f g三种格式 它们的区别如下 e 以科学计数法表示 小数点左边只有一位 小数点右边保留6位 过长则截去 不够则补零 接着是符号e 再接着就是10的多少次幂 f 要求小数点右边保留6位 过长则截去 不够则补零 g 没有上面
  • pandas学习笔记—agg()函数详解

    目录 1 agg 函数定义 2 举例 2 1 简单的列或行统计 2 2 自定义统计函数 2 3 先groupby 再agg 1 agg 函数定义 agg 函数是聚合函数 DataFrame agg func axis 0 args kwar
  • sprintf格式化字符串

    可以利用sprintf对字符串进行格式化 sprintf 目标字符串 格式 占位参数 格式化字符串 void test01 char buf 1024 memset buf 0 1024 sprintf buf 今天是 d年 d月 d 日
  • Failed to start docker.service: Unit not found(Docker服务起不来)

    原文https blog csdn net qq 34508530 article details 84989990 linux部署Docker出现 Failed to start docker service Unit not found
  • 多种方案教你实现iframe嵌套页面相互传参(父子通信)

    文章目录 需求描述 开始上手 上代码 父向子传值 方法一 通过URL传参 方法二 通过window postMessage 方法 注意事项 子向父传值 方法一 通过通过全局变量方式处理 方法二 通过通过window parent postM
  • DVWA-BruteFoce高级安全

    DVWA security high GET包结构 比起来之前low medium等级 可以看到这里多了一个参数 user token 为了防止重放攻击 但是明显能看出来user token就是用户输入密码的md5形式 直接用burpsut
  • 用ChatGPT生成openAI全景报告

    云孚科技基于业内领先的自然语言处理 知识图谱 语义匹配 智能写作等技术 打造了云孚开源情报系统YFINT 并结合ChatGPT模型成果 重磅推出OpenAI调研报告 ChatGPT简介 2022年11月30日 总部位于旧金山的OpenAI推
  • 【13届蓝桥杯复盘】九进制转十进制 顺子日期

    问题描述 九进制正整数 2022 下标9 转换成十进制等于多少 方法 权值展开 2 93 2 9 2 9 0 1478 如果 一定要用代码来实现 C 代码如下所示 include
  • python+selenium实现cookie登录,并抓取指定类class下的html内容

    个人研究学习研究用 1 首先通过链接手动登录 https www educity cn 获取cookie信息 2 再使用站点cookie登录 跳转到https uc educity cn tiku testReport html id 80
  • Hadoop组件的一些总结

    前言 Hadoop是一个由Apache基金会所开发的分布式系统基础架构 用户可以在不了解分布式底层细节的情况下 开发分布式程序 充分利用集群的威力进行高速运算和存储 提示 以下是本篇文章正文内容 下面案例可供参考 一 Hadoop的组成 H
  • [转]为什么未来不需要我们?

    为什么未来不需要我们 在21世纪 我们威力无比的三种科技 机器人 基因工程和纳米技术正在使人类成为濒危物种 作者 比尔 乔伊 自从我从事科技创造的那一刻起 我就关注其在伦理上的问题 但直到1998年秋天我才认识到我们在21世纪面临着多大的危
  • python3+flask 开发web(一)

    1 环境准备 1 安装Python https www python org 2 安装python ide pycharm https www jetbrains com pycharm 3 安装flask 安装好了python 电脑就自动