python Web 开发 Flask 介绍_python flask web开发

检查一下是否安装正确 在命令行下输入 python 进入命令行模式 引入flask模块 回车

>>> import flask

如果没有错误提醒,就说明安装成功了

Hello world

下面写个最简单的Web应用 hello.py

from flask import Flask  # 引入Flask模块

打开终端,跳转到hello.py文件所在的文件夹,进入python命令行模式,启动服务

>>> python hello.py

如果一起正常的话会有类似下面的反馈

 * Serving Flask app "hello" (lazy loading)

因为是通过app.run()启动的服务,所以会有个错误提示,提醒不能将此Web应用部署在生产环境中,可以暂时忽略

此时,打开浏览器,输入 127.0.0.1:5000/ 或者 localhost:5000/, 就可以看到 Hello World!欢迎字样。

路由

路由是Web开发中一个很重要的概念,用来将不同的请求,映射到响应的处理方法上,这个方法被称为视图函数。比如刚才的Hello应用,将根请求,映射到index处理方法上,下面简单了解下Flask对路由的支持 Flask通过修饰器(和Java的注解类似)来建立路由映射关系的,已经看到修饰器是app.rotue()

简单路由

如 访问 /hello

@app.route('/hello')

动态路由

如访问 /user/bob 或者 /user/lily 都会映射到同一视图函数上

@app.route('/user/<name>')

动态域名中动态的部分可以作为视图函数的参数,也支持多个动态参数,如访问 /user/bob/23

@app.route('/user/<name>/<age>')

还可以指定动态部分的数据类型,如

@app.route('/post/<int:post_id>')

支持的数据类型

类型说明
string(默认值) 任何不包含斜杠的文本
int正整数
float正浮点数
path类似 string ,但可以包含斜杠
uuid接受 UUID 字符串
指定HTTP 方法

HTTP协议,支持多种HTTP 方法,例如HEADOPTIONS,以及常用的GETPOST等,Flask自动处理了HEADOPTIONS,路由默认接受的方法是GET,如果要匹配其他请求方法,可以在路由方法的methods参数来指定

@app.route('/login', methods=['GET', 'POST'])

复合路由

也可以将多个路由规则,用于一个视图函数, 如访问/job/ 和访问 /work/效果是一样的

@app.route('/job/')

再复杂一点的例子

@app.route('/users/', defaults={'page': 1})

上面的代码表示,当访问/user/或者 /user/page/<pageindex> 时,都会有show_users视图函数来处理, 而且还为/user/提供了默认值,即访问/user/相当于访问 /user/page/1

请求和响应

Web应用,最重要的事情就是处理接收到的请求,并返回响应。Flask框架也一样,它提供了请求对象request和响应对象response,可以方便的在视图函数中使用。

请求

Flask将客户端发送的HTTP请求封装成了request请求对象,并且使用上下文(context)临时将request变为全局可访问的,于是在视图还是中,就可以直接使用了。

注意request并非真正的全局变量!试想,在多线程服务器中,多个线程同时处理不同客户端发送的不同请求时,每个线程看到的request对象必然不同。Falsk使用上下文让特定的变量在一个线程中全局可访问,与此同时却不会干扰其他线程。

Flask有两种上下文,分别为程序上下文和请求上下文,各自对应的全局变量如下表:

变量名上下文类型备注
current_app程序上下文表示当前运行的程序实例
g程序上下文处理请求时用作临时存储对象,每次请求都会重新设值
request请求上下文客户端发来的request请求对象
session请求上下文请求携带的会话信息

使用request对象前,需要先引入

from flash import request

request对象提供了丰富的属性和方法,这里举个例子:通过使用 method 属性可以操作当前请求方法,通过使用 form 属性处理表单数据(在 POST 或者 PUT 请求 中传输的数据)。以下是使用上述两个属性的例子:

@app.route('/login', methods=['POST', 'GET'])

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

### 使用Flask实现Web开发中的登录和注册功能 #### 开发环境准备 为了开始使用Flask进行Web开发,首先需要确保已安装Python以及pip包管理工具。接着可以通过以下命令安装Flask框架[^2]: ```bash pip install flask ``` #### 创建基础项目结构 创建一个新的文件夹作为项目的根目录,并在其中初始化必要的文件。通常情况下,一个简单的Flask应用程序会包含以下几个部分: - `app.py`:主要的应用逻辑。 - 静态资源文件夹(可选):用于存储CSS、JavaScript和其他静态文件。 - 模板文件夹:用于HTML模板。 #### 示例代码:用户认证模块 下面是一个完整的示例代码,展示了如何使用Flask实现用户的登录和注册功能。 ##### 安装额外依赖项 除了Flask之外,还需要一些扩展库来处理密码加密等功能。可以运行以下命令安装这些库: ```bash pip install flask-bcrypt flask-sqlalchemy ``` ##### 应用程序代码 (`app.py`) 以下是实现用户登录和注册的核心代码: ```python from flask import Flask, render_template, request, redirect, url_for, flash, session from flask_sqlalchemy import SQLAlchemy from flask_bcrypt import Bcrypt # 初始化应用 app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key' # 设置密钥 app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' # 数据库存储路径 db = SQLAlchemy(app) bcrypt = Bcrypt(app) # 用户模型定义 class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) password_hash = db.Column(db.String(120), nullable=False) def set_password(self, password): self.password_hash = bcrypt.generate_password_hash(password).decode('utf-8') def check_password(self, password): return bcrypt.check_password_hash(self.password_hash, password) # 路由:主页 @app.route('/') def home(): return "欢迎访问!" # 路由:注册页面 @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user = User(username=username) user.set_password(password) try: db.session.add(user) db.session.commit() flash("注册成功!", "success") return redirect(url_for('login')) except Exception as e: flash(f"用户名已存在或发生错误: {e}", "danger") return ''' <form method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <button type="submit">注册</button> </form> ''' # 路由:登录页面 @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user = User.query.filter_by(username=username).first() if user and user.check_password(password): session['logged_in'] = True flash("登录成功!", "success") return redirect(url_for('home')) else: flash("用户名或密码不正确", "danger") return ''' <form method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <button type="submit">登录</button> </form> ''' if __name__ == '__main__': with app.app_context(): db.create_all() # 创建数据库表 app.run(debug=True) ``` 上述代码实现了两个核心功能——用户注册和登录验证。通过`flask_sqlalchemy`完成数据持久化操作,而`flask_bcrypt`则负责安全地处理密码哈希[^3]。 #### 运行与测试 启动服务器后,在浏览器中打开地址`http://localhost:5000/register`即可进入注册界面;同样地,访问`http://localhost:5000/login`能够尝试登录已有账户。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值