码迷,mamicode.com
首页 > 其他好文 > 详细

重新捡起flask(四)

时间:2017-11-25 11:20:50      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:pos   request   and   temp   视图   config   阶段   trap   val   

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

标签:pos   request   and   temp   视图   config   阶段   trap   val   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!