重新捡起flask

Posted onhacker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重新捡起flask相关的知识,希望对你有一定的参考价值。

中间一个礼拜没有看过flask了,今天重新捡起来,一切又开始陌生了。强迫自己看下去,也算是有了收获。

以前大概到这里就开始没有怎么实际写过代码了,其实看书,和实际写代码还真是差的很远。

刚看了没多久,由于自己现在是自己手敲,所以走了一些弯路,但这些弯路其实对于成长来说,还真是很有用的。

这里我举个刚刚遇到的例子。

 不知道为什么博客园好像上传图片的服务出问题了

命令行还不能复制,蛋疼的很,我还是口述吧。

from flask import Flask, render_template
from flask import request
# from flask_script import Manager
from flask_bootstrap import Bootstrap
from flask_moment import Moment
from datetime import datetime
from flask_wtf import Form
from wtforms import StringField, SubmitField
from wtforms.validators import Required

class NameForm(Form):
    name = StringField("你是什么名字?", validators=[Required()])
    submit = SubmitField("提交")

app = Flask(__name__)
app.config["SECRET_KEY"] = "my_flasky"
bootstap = Bootstrap(app)
moment = Moment(app)
form = NameForm()
# manager = Manager(app)

@app.route("/")
def index():
    return render_template("index.html", current_time = datetime.now())

@app.route("/user/<name>")
def user(name):
    return render_template("user.html", name = name)

@app.errorhandler(404)
def page_not_found(e):
    return render_template(404.html), 404

@app.errorhandler(500)
def page_not_found(e):
    return render_template(500.html), 404

@app.route("/test", methods=[GET, POST])
def test(form):
    
    return render_template("test.html", form = form)


if __name__ == "__main__":
    app.run(debug=True)

上述代码运行,会出现一个莫名报错。报错内容是和上下文有关系的。说实话,到现在这个阶段,我是不太理解上下文的。

但是后面一想,结合到狗书中的代码我想到了一个问题,我实例化form出问题了。

我不能在全局里面实例化他,而应该是视图函数里面实例化他。这样我才能拿到上下文。

 

所以后面改成这样了。

from flask import Flask, render_template
from flask import request
# from flask_script import Manager
from flask_bootstrap import Bootstrap
from flask_moment import Moment
from datetime import datetime
from flask_wtf import Form
from wtforms import StringField, SubmitField
from wtforms.validators import Required

class NameForm(Form):
    name = StringField("你是什么名字?", validators=[Required()])
    submit = SubmitField("提交")

app = Flask(__name__)
app.config["SECRET_KEY"] = "my_flasky"
bootstap = Bootstrap(app)
moment = Moment(app)

# manager = Manager(app)

@app.route("/")
def index():
    return render_template("index.html", current_time = datetime.now())

@app.route("/user/<name>")
def user(name):
    return render_template("user.html", name = name)

@app.errorhandler(404)
def page_not_found(e):
    return render_template(404.html), 404

@app.errorhandler(500)
def page_not_found(e):
    return render_template(500.html), 404

@app.route("/test", methods=[GET, POST])
def test():
    form = NameForm()
    return render_template("test.html", form = form)


if __name__ == "__main__":
    app.run(debug=True)

代码正常,虽说没什么技术含量,但是这可能对上下文的理解有帮助,我就发上来了。

另外,再补充一句,我和狗书上不同的是,我是用了单独一个test函数来测试的,我觉得这样的方法还不错,先在test里面验证是否OK,再去改实际的函数。

修饰的路由函数,其实可以去掉关键字参数methods也能正常运行,只不过可能提交表单会出问题,还没测试,待大家来验证吧!

以上是关于重新捡起flask的主要内容,如果未能解决你的问题,请参考以下文章

重新捡起flask

重新捡起flask

重新捡起flask

重新捡起flask

2017年10月17日-重新捡起的知识-字节比特-计算机常识

python Flask - 数据库片段