Python Flask学习_POST/重定向/GET模式

问题:刷新浏览器页面时,浏览器会重新发送之前发送的最后一个请求。如果这个请求是包含表单数据的POST请求,刷新页面后会再次提交表单。浏览器会发出警告:要求在再次提交前确认。

因此,最好别让Web程序把POST请求作为浏览器发送的最后一个请求。

解决方法是:使用重定向作为刷新产生的POST请求的响应。重定向响应是一种响应URL(而不是HTML代码)的特殊响应,浏览器收到相应的URL,会向重定向的URL发起GET请求。

流程示意图:

客户端(浏览器)--------(POST请求)---------------->服务器

客户端(浏览器)<-------------(URL)----------------服务器

客户端(浏览器)--------(GET请求URL)-------------->服务器

例子:

# test.py

from flask import Flask, rend
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Python Flask用户注册代码示例: ```python from flask import Flask, render_template, request, redirect, url_for from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) password = db.Column(db.String(80), nullable=False) @app.route('/', methods=['GET', 'POST']) def register(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user = User.query.filter_by(username=username).first() if user: return render_template('register.html', error='Username already exists') new_user = User(username=username, password=password) db.session.add(new_user) db.session.commit() return redirect(url_for('login')) return render_template('register.html') @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, password=password).first() if user: return redirect(url_for('dashboard')) else: return render_template('login.html', error='Invalid username or password') return render_template('login.html') @app.route('/dashboard') def dashboard(): return render_template('dashboard.html') if __name__ == '__main__': db.create_all() app.run(debug=True) ``` 在此代码中,我们使用了FlaskFlask-SQLAlchemy来创建一个简单的用户注册和登录系统。我们定义了一个`User`模型,使用SQLite数据库进行存储。我们定义了`register()`和`login()`视图函数来处理用户注册和登录请求,并根据请求方法执行相应的操作。最后,我们定义了一个简单的`dashboard()`视图函数来显示用户的仪表板页面。 在此代码中,我们使用了HTML模板来渲染注册、登录和仪表板页面。我们还使用了Flask的路由和重定向功能来处理用户请求和页面导航。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值