【Python之Flask框架】Day1

本文介绍了Python轻量级Web框架Flask,对比了它与Django的区别,并通过实例讲解了Flask的快速使用,包括WSGI接口、Flask应用创建、HTML页面制作以及请求处理和重定向。同时,解答了关于模块引用、Python '@'语法及run_simple()函数的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Python之Flask框架】Day1

一、了解Flask

短小精悍,可扩展性强(第三方扩展,Flask文档里有每个模块的收集github)

与Django的区别:Django重而大,自带多种武器,Flask通过扩展也可实现。

二、Flask快速使用案例

2.1 wsgi接口

WSGI是 Web Server Gateway Interface 的缩写。它是 Python应用程序(application)或框架(如 Django)和 Web服务器之间的一种接口,已经被广泛接受。它是一种协议,一种规范,其是在 PEP 3333 提出的。这个协议旨在解决众多 web 框架和web server软件的兼容问题。有了WSGI,你不用再因为你使用的web 框架而去选择特定的 web server软件。

常见的web应用框架有:Django,Flask等。

-django,wsgiref

-flask,werkzurg

from werkzeug.wrappers import Request, Response
from werkzeug.serving import run_simple

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

if __name__ == '__main__':

    run_simple('localhost',4000,hello)

在这里插入图片描述

【Q1】模块引用变灰:没有使用到相应模块

【Q2】@是什么?(python中@的用法)

在Python的函数中偶尔会看到函数定义的上一行有@functionName的修饰,当解释器读到@这样的修饰符的时候会优先解除@后的内容,直接就把@的下一行的函数或者类作为@后边函数的参数,然后将返回值赋给下一个修饰的函数对象。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nl4Gv3q2-1618209231224)(C:\Users\13602\AppData\Roaming\Typora\typora-user-images\image-20210410152358975.png)]

【Q3】run_simple()是什么?

启动一个 WSGI application。

//当客户端发出一个 HTTP 请求后,是如何转到我们的应用程序处理并返回的呢?640?wx_fmt=png

1、两级结构
在这种结构里,uWSGI作为服务器,它用到了HTTP协议以及wsgi协议,flask应用作为application,实现了wsgi协议。当有客户端发来请求,uWSGI接受请求,调用flask app得到相应,之后相应给客户端。
这里说一点,通常来说,Flask等web框架会自己附带一个wsgi服务器(这就是flask应用可以直接启动的原因),但是这只是在开发阶段用到的,在生产环境是不够用的,所以用到了uwsgi这个性能高的wsgi服务器。

2.2flask初级使用

2.2.1 创建application
from flask import Flask

app = Flask(__name__) #Flask的一个类对象

@app.route('/index')
def index():
    return 'Hello World'

if __name__ == '__main__':
    app.run() #run_simple(host,port,app)
2.2.2html页面
from flask import Flask,render_template

app = Flask(__name__) #Flask的一个类对象

@app.route('/login')
def index():
    return render_template('login.html')
if __name__ == '__main__':
    app.run()

创建document,改:templates

doc下创建login.html 的html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>休息系统-用户登录</title>
</head>
<body>
    <h1>登陆</h1>
    <form method="post">
        <input type="text" name="user">
        <input type="password" name="pwd">
        <input type="submit" value="提交">
    </form>
</body>
</html>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GbBDAdeA-1618209231229)(C:\Users\13602\AppData\Roaming\Typora\typora-user-images\image-20210410162239209.png)]

2.2.3请求&登陆&重定向跳转

Flask特色:请求来了时不是用通过参数传递的。(往上放)

from flask import Flask,render_template,request,redirect

app = Flask(__name__) #Flask的一个类对象

@app.route('/login',methods=['GET',"POST"])
def login():
   if request.method == 'GET':
       return render_template('login.html')
   user = request.form.get('user')
   pwd = request.form.get('pwd')
   if user == 'harld' and pwd == '123':
       return redirect('/index')
   else:
       return render_template('login.html',msg ='用户名或密码错误')

@app.route('/index')
def index():
    return "欢迎宝贝登陆"

if __name__ == '__main__':
    app.run()
plate('login.html',msg ='用户名或密码错误')

@app.route('/index')
def index():
    return "欢迎宝贝登陆"

if __name__ == '__main__':
    app.run()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值