首页 > 其他分享 >flask快速上手

flask快速上手

时间:2023-07-31 20:01:44浏览次数:31  
标签:__ return name get flask app 快速

目录

1 flask 介绍

# python 界的web框架
	-Django:大而全,快速开发,公司内部项目
    -Flask:小而精,不具备web开发好多功能,丰富的第三方插件
    -FastApi:异步框架,主要为了做前后端分离接口
    -Sanic:异步框架,只支持python3.6 及以上,性能比较高
    -Tornado:公司用的比较少。。。
    
# Flask 框架
	-pip3 install flask
    

fastapi

import time
from fastapi import FastAPI
app = FastAPI()
@app.get('/')
async def index():
    time.sleep(3)
    return {'code': 100, 'msg': '成功'}

@app.get('/home')
async def home():
    time.sleep(2)
    return {'code': 100, 'msg': 'home'}

@app.get('/order')
async def home():
    time.sleep(2)
    return {'code': 100, 'msg': 'order'}


flask

from flask import Flask
app = Flask(__name__)
@app.route('/', methods=['GET'])
def index():
    return 'hello world'
if __name__ == '__main__':
    app.run()

wsgiref

# 服务 wsgi协议的web服务器,django的web服务用的就是它
# 相当于个socket服务端,可以接收客户端发送过来的请求,处理,返回给客户端


from wsgiref.simple_server import make_server

def mya(environ, start_response):
    print(environ)
    start_response('200 OK', [('Content-Type', 'text/html')])
    if environ.get('PATH_INFO') == '/index':
        with open('index.html','rb') as f:
            data=f.read()

    elif environ.get('PATH_INFO') == '/login':
        with open('login.html', 'rb') as f:
            data = f.read()
    else:
        data=b'<h1>Hello, web!</h1>'
    return [data]

if __name__ == '__main__':
    myserver = make_server('', 8011, mya)# 监听本地的8011端口,当请求来了,就会执行    mya(),传入两个参数,一个是environ:http请求转成python的字典,一个是start_response:响应对象
    print('监听8010')
    myserver.serve_forever()



image-20230731154600748

Werkzeug

Werkzeug是一个WSGI工具包(在它基础上,继续封装),他可以作为一个Web框架的底层库。这里稍微说一下, werkzeug 不是一个web服务器,也不是一个web框架,而是一个工具包,官方的介绍说是一个 WSGI 工具包,它可以作为一个 Web 框架的底层库,因为它封装好了很多 Web 框架的东西,例如 Request,Response 等等

from werkzeug.wrappers import Request, Response

@Request.application
def hello(request):
    return Response('Hello World!')

if __name__ == '__main__':
    from werkzeug.serving import run_simple
    run_simple('localhost', 4000, hello)

image-20230731160029199

2 显示用户小案例

from flask import Flask, render_template, request, redirect, session

app = Flask(__name__, template_folder='templates')
app.debug = True
app.secret_key = 'sdfsdfsdfsdf'  # 等同于django的 配置文件有个很长的秘钥


USERS = {
    1:{'name':'张三','age':18,'gender':'男','text':"道路千万条"},
    2:{'name':'李四','age':28,'gender':'男','text':"安全第一条"},
    3:{'name':'王五','age':18,'gender':'女','text':"行车不规范"},
}



@app.route('/login', methods=['GET', 'POST'])
def login():
    # 只要在这个函数中,全局的request 就是当次请求的request对象,等同于django的request
    if request.method == 'GET':  # get请求返回模板
        return render_template('login.html')  # 新手四件套之一,返回模板
    else:
        username = request.form.get('username')
        password = request.form.get('password')
        if username == 'lqz' and password == '123':
            # 登录成功,把登录信息,写入到session中
            session['username'] = username
            # return redirect('http://www.baidu.com')   #重定向到百度,新手四件套之一,返回重定向
            return redirect('/index')  # 重定向到百度,新手四件套之一,返回重定向
        else:
            return render_template('login.html', error='用户名或密码错误')


@app.route('/index')
def index():
    # 判断它是否登录,如果登录,显示用户信息
    if session.get('username'):
        return render_template('index.html',users=USERS)
    else:
        return redirect('/login')



@app.route('/detail/<int:pk>')
def detail(pk):
    user=USERS.get(pk)
    return render_template('detail.html',user=user)

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



'''
1 新手三件套: 1 直接返回字符串  2 render_template  3 redirect
2 flask的路由写法,是基于装饰器的  @app.route('/detail/<int:pk>' ,methods=['GET'])
3 路由转换器跟django一样
4 取出前端post请求提交的数据:request.form
5 取出请求方式:request.method
6 使用session设置值和取值   
    -session[key]=value
    -session.get('key')
7 flask的模板语法完全兼容dtl,并且它更强大,可以加括号执行

'''

detail.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
<h1>详细信息 {{user.name}}</h1>
    <div>
        {{user.text}}
    </div>

</body>
</html>

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
<h1>用户列表</h1>
<table>
    {% for k,v in users.items() %}
    <tr>
        <td>{{k}}</td>
        <td>{{v.name}}</td>
        <td>{{v['name']}}</td>
        <td>{{v.get('name')}}</td>
        <td><a href="/detail/{{k}}">查看详细</a></td>
    </tr>
    {% endfor %}
</table>
</body>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    <p>用户名:<input type="text" name="username"></p>
    <p>密码:<input type="password" name="password"></p>
    <p><input type="submit" value="提交">{{error}}</p>

</form>


</body>
</html>

标签:__,return,name,get,flask,app,快速
From: https://www.cnblogs.com/yuezongke/p/17594351.html

相关文章

  • SHFB:为 .NET 类库快速生成说明文档
    SHFB全称SandcastleHelpFileBuilder,项目地址:https://github.com/EWSoftware/SHFB。它使用代码中的xml注释生成说明文档。因此,使用SHFB之前要给代码编写好xml注释。安装进入项目的GithubRelease页面:https://github.com/EWSoftware/SHFB/releases下载最新发行版本,SHFB......
  • HTML 快速301到其他页面
    要实现HTML页面以最快速度执行301跳转到其他页面,您可以在`<head>`部分使用`http-equiv`属性与`refresh`实现。以下是一个示例HTML文件,该文件会立即执行301永久重定向到指定URL:```html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv=&qu......
  • flask实现登录
    fromflaskimportFlask,request,render_template,redirect,sessionfromfunctoolsimportwrapsapp=Flask(name,template_folder='templates')app.debug=True字符串随便起app.secret_key="affedasafafqwe"@app.route('/')defhel......
  • 网络故障监测终端帮助用户快速定位
    RTU5028E网络故障监测终端是一款功能强大的设备,它集合了断网、断电、网线故障报警功能,可同时监测多达7台网络设备。这款终端还具备自动重启和远程重启网络设备功能,能够帮助用户快速定位远程网络设备离线的原因。该终端可通过局域网连接配置软件进行配置,方便用户进行设置。此外,用户......
  • java常见的排序算法(冒泡排序、选择排序、插入排序、shell排序、归并排序、堆排序、快
    文章目录一、冒泡排序1、效率表现和适用范围2、算法实现二、选择排序1、效率表现和适用范围2、算法实现三、插入排序1、效率表现和适用范围2、算法实现四、shell排序1、效率表现和适用范围2、算法实现五、归并排序1、效率表现和适用范围2、算法实现六、快速排序1、效率表现和适用......
  • 快速上手StarRocks
    StarRocks简介StarRocks(前身为Doris)是新一代极速全场景MPP数据库StarRocks高效支持实时数据分析用户可使用StarRocks构建大宽表、星型模型、雪花模型等多种模型快速上手,兼容MySQLProtocol,对现有研发人员非常友好注:MPP数据库:MassivelyParallelProcessing大规模并行处理......
  • 怎么学习C语言,才能快速掌握?
    有多年软件行业经验,期间参与过多个C语言项目。要掌握一门编程语言,仅仅投入时间学习是不够的,关键在于实际项目经验。在没有真正实战经验之前,不宜轻易声称掌握某种编程语言,因为编程是积累性的工作,理论知识重要但实践更为关键。学习任何编程语言都需要先掌握理论基础,然后通过项目实战......
  • python 快速创建大文件
    Python快速创建大文件在处理大数据集时,我们有时需要创建大文件进行测试、模拟或其他目的。Python作为一门功能丰富且易于上手的语言,提供了多种方法来快速创建大文件。本文将介绍几种常用的方法,并提供相应的代码示例。方法一:使用os模块写入随机数据importosdefcreate_large_f......
  • 快速幂
    当幂指数很大的时候,线性可能也会超时intqpow(inta,intb,intp){intans=1;a=a%p;while(b){if(b&1)ans=ans*a%p;//不能写成ans*=a,不知道原因,反正会waa=a*a%p;b>>=1;}retur......
  • 手机防窥膜对眼睛危害非常大,快速避坑,避免智商税!
    背景如果你的手机贴了防窥膜,在室外阳光下你想看清楚机屏幕上的文字,是不是有个动作就是调亮屏幕!因为防窥膜透光率比较低,那你就得提高手机亮度。国产的防窥膜透光率只有30%左右韩国进口防窥膜的透光率在50%左右透光率越低意味着对眼晴的影响越大!防窥膜原理防窥膜的原理是手机膜......