python - flask去掉return redirect(url_for(’index’)),结果没有变化
问题描述
上代码,
import osfrom flask import Flask, render_template, session, redirect, url_forfrom flask_script import Managerfrom flask_bootstrap import Bootstrapfrom flask_moment import Momentfrom flask_wtf import FlaskFormfrom wtforms import StringField, SubmitFieldfrom wtforms.validators import Requiredfrom flask_sqlalchemy import SQLAlchemybasedir = os.path.abspath(os.path.dirname(__file__))app = Flask(__name__)app.config[’SECRET_KEY’] = ’hard to guess string’app.config[’SQLALCHEMY_DATABASE_URI’] = ’sqlite:///’ + os.path.join(basedir, ’data.sqlite’)app.config[’SQLALCHEMY_COMMIT_ON_TEARDOWN’] = Trueapp.config[’SQLALCHEMY_TRACK_MODIFICATIONS’] = Falsemanager = Manager(app)bootstrap = Bootstrap(app)moment = Moment(app)db = SQLAlchemy(app)class Role(db.Model): __tablename__ = ’roles’ id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), unique=True) users = db.relationship(’User’, backref=’role’, lazy=’dynamic’) def __repr__(self):return ’<Role %r>’ % self.nameclass User(db.Model): __tablename__ = ’users’ id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True, index=True) role_id = db.Column(db.Integer, db.ForeignKey(’roles.id’)) def __repr__(self):return ’<User %r>’ % self.usernameclass NameForm(FlaskForm): name = StringField(’What is your name?’, validators=[Required()]) submit = SubmitField(’Submit’)@app.errorhandler(404)def page_not_found(e): return render_template(’404.html’), 404@app.errorhandler(500)def internal_server_error(e): return render_template(’500.html’), 500@app.route(’/’, methods=[’GET’, ’POST’])def index(): form = NameForm() if form.validate_on_submit():user = User.query.filter_by(username=form.name.data).first()if user is None: user = User(username=form.name.data) db.session.add(user) session[’known’] = Falseelse: session[’known’] = Truesession[’name’] = form.name.datareturn redirect(url_for(’index’)) return render_template(’index.html’, form=form, name=session.get(’name’), known=session.get(’known’, False))if __name__ == ’__main__’:manager.run()
这句话中:
@app.route(’/’, methods=[’GET’, ’POST’])def index(): form = NameForm() if form.validate_on_submit():user = User.query.filter_by(username=form.name.data).first()if user is None: user = User(username=form.name.data) db.session.add(user) session[’known’] = Falseelse: session[’known’] = Truesession[’name’] = form.name.datareturn redirect(url_for(’index’)) return render_template(’index.html’, form=form, name=session.get(’name’), known=session.get(’known’, False))
return redirect(url_for(’index’))有没有结果是一样的?!
问题解答
回答1:orz
因为你 post 的页面和 redirect 的页面都是 index 所以看不出区别,你把 redirect 的目标换成别的就可以看出区别了。
回答2:如果你抓过包就知道有没有起作用了,POST 过去之后会有一次重定向请求。