首页 > 其他 > 详细

重新捡起flask(四)

时间:2017-11-25 10:48:52      阅读:346      评论:0      收藏:0      [点我收藏+]

中间一个礼拜没有看过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(四)

原文:http://www.cnblogs.com/onhacker/p/7894496.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!