重新捡起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也能正常运行,只不过可能提交表单会出问题,还没测试,待大家来验证吧!

时间: 2024-11-10 11:07:28

重新捡起flask(四)的相关文章

Flask快速入门(2) — Flask四剑客与配置文件

目录 Flask四剑客 配置文件的方式 第一种方式 第二种方式 第三种方式 第四种方式 其他方式 Flask四剑客 在Django中后端返回响应有几种形式:render(前端渲染页面).redirect(重定向跳转).HttpResponse(直接返回).JsonResponse(实际内部继承了HttpResponse,返回json字符串). 在Flask中也有相对的返回机制: render:前端渲染页面 redirect_:重定向跳转 jsonify:返回json字符串 return 'xx'

Flask 四剑客

Flask 四剑客 返回字符串,返回 html , 跳转路由,返回 json from flask import Flask, render_template, redirect, jsonify app = Flask(__name__) @app.route('/index/') def index(): # 返回字符串 # return 'hello flask' # 返回一个 HTML # 从 flask 里面导入 render_template # 在同级目录中添加templates文

Flask(四)

Flask操作数据库: 需要提前安装:flask_sqlalchemy,(pip install flask_sqlalchemy)如果连接的是mysql数据库,需要安装mysqldb驱动;(pip install flask_mysqldb) 一对多: 代码如下: from flask import Flaskfrom flask_sqlalchemy import SQLAlchemy class Config(object): """项目配置类""&

flask四:URL两种传参方式(路径传参和get传参)

新建一个视图 第一种:路径传参:url/参数:<参数名>,然后再视图函数中接收参数 也可以指定数据类型 string:默认使用此数据类型,接收没有任何斜杠"\/"的文本int:接收整形float:接收浮点型path:和string的类似,但是可以接受斜杠 uuid:只接收符合uuid的字符串,一般用于表的主键 使用uuid:10190dee-d9d4-4429-ad51-22f24c0a5ee1 any:可以指定多种数据类型.可以在一个url中映射多个资源 第二种:get传

重新捡起flask(三)

记一次bug调试. 本来以为模板这一章可以很快的过掉的,刚刚写完的2其实只剩下个flask-moment时间库了,之前早就做过,记得很简单,本来说只要敲一下代码就结束,没想到,踩坑里去了. 调试bug吗,我想起了温伯格先生书里说到,永远要做点别的事,特别是对计算机,重复执行只会得到一样的结果. 现在错误我简单来描述一下,就是我在打开index主页时,报了一个这样的错. 为了解开这个错误,我做了几点尝试. 第一,我试了一下打开user页面,页面是正常的. 那说明base.html应该没什么问题.因

重新捡起flask(七)

来到数据库一章了,进度很销魂的慢,中间其实还是忍不住玩了一下勇敢的心,整体画风十分强悍,本来录了视频的,没想到最后没保存下来,坑死了... 来到数据库一章,我的心还是很蒙的. 虽说自己之前sql写的666,但是你让我建模我还真没干过啊! 然后狗书里用的还是sqlalchemy,用面向对象来理解数据库,我选择godie,我知道为什么叫狗书了...开玩笑啦. 不过说实话,是有些懵. 因为你在这个框架里呆的时间还很短,什么都不知道,你不知道这个框架为你做了什么,你就像一个瞎子一样,只能靠着狗书的引导.

Flask的基本使用、四剑客和配置文件

Flask简介 安装 pip install flask 使用 # 1.导入flask from flask import Flask # 2.生成一个Flask对象,__name__表示当前文件的名字 app = Flask(__name__) # 3.添加路由,flask用的是装饰器的模式 # 注册路由,并写响应函数hello_world @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__ma

Flask.3

Flask四大内置对象 request session g global 全局 帮助我们实现全局数据共享 生命周期:在单次请求中 config 或者 app 就是当前运行的项目 获取当前运行的App的位置 应该是存在价值和意义的 钩子函数 编程模型 OOP 面向对象编程 POP 面向过程编程 IOP 面向接口编程 AOP 面向切面编程 动态介入到既有流程中 重要概念 切点 请求前 请求后 请求异常 切面 请求前 request 请求后 request response 请求异常 exceptio

Flask+Vue 初试牛刀

------------------------------------------------------------------------------------------------------------------ 工具: pycharm python vscode vue ---------------------------------------------------------------------------------------------------------