Flask/Django/Tornado语法对比(持续更新中)
表格如下[1](加入了一些自己想到的补充):
Flask | Django | Tornado | |
请求方式限定 |
@app.route('/login/', methods=['GET','POST']) |
@require_http_methods(["GET","POST"]) def my_view(request): pass |
class RegisterHandler(tornado. web.RequestHandler): def post(self): 也就是说通过是否定义get/post函数来限定请求方式 |
调试模式 |
app.run(host='0.0.0.0', port=5000,debug='True') |
settings.py中设置DEBUG = True |
import tornado.web settings = {'debug' : True} application = tornado.web.Application( |
指定端口 |
工程文件中加入: app.run(host='0.0.0.0', port=5000,debug='True') |
启动命令中加入: python manager.py runserver --host 0.0.0.0 --port 9008 |
application.listen(8888) tornado.ioloop.IOLoop.instance().start() |
路由 |
@app.route('/login/', methods=['GET','POST']) |
urls.py |
application = tornado.web.Application([ (r"/",MainHandler)], ) |
传参到模板 | return render_template('index.html', num=num, now=now) | render(request, "login.html", {"goods": goods}) | self.render('register.html', username=username) |
重定向 |
return redirect(url_for( 'admin.admin_category')) |
redirect(reverse("index")) | self.redirect(self.reverse_url('login')) |
返回带字符串页面 |
|
HttpResponse("ok") | self.write("hello world") |
接受前端返回的数据(post) | username = request.form.get("username") | username = request.POST.get("username") | username = self.get_argument("username") |
从数据库査数据 |
user = user.query.gey(1) # get 只需要将id填进去即可 user = user.query.filter(User.id==1) # filter 注意2个等号 user = user.query.filter_by(id=1) # filter_by 不需要表名,一个等号 |
注意用get没找到数据会报错,但是filter没找到不会报错 user = user.objects.get(id=1) # filter、all |
基本和flask一致,但是其query需要带表名, user = session.query(Person). filter_by(name=username) |
写入数据库 |
person = Person() person.name = username try: db.session.add(person) # 成功提交 db.session.commit() # 保存 except: db.session.rollback() # 失败回滚 db.session.flush() # 刷新缓冲区 |
person = Person() person.name = username user.save() 保存即可 |
person = Person() person.name = username try: session.add(person) session.commit() except: session.rollback() session.flush() self.write('注册失败') |
举例,tornado的调试模式完整代码test.py[2]:
import tornado.ioloop
import tornado.web settings = {'debug' : True}class MainHandler(tornado.web.RequestHandler): def get(self): self.write("hello world") application = tornado.web.Application(
[(r"/",MainHandler)],
**settings
) if __name__ == "__main__": application.listen(8888) tornado.ioloop.IOLoop.instance().start()
python test.py
浏览器打开:
127.0.0.1:8888
测试:
当修改代码中的"hello world"为"hello worldxxxx"时
不必重启工程文件,直接在浏览器按下F5就能看到修改后的效果.
Reference:
[1]django、flask、tornado区别
[2]如何开启Tornado的调试模式
Flask/Django/Tornado语法对比(持续更新中)相关推荐
- Python和Scala和Java的语法对照表(持续更新中)
泛型 Scala Java def func1(a:String,b:Long): Tuple2[String,Long] = { val random=new Random() ...
- python中text函数的语法_Python语法大全(持续更新中ing)
1.type()函数可以返回任何Python定义的数据类型. Python提供了一些数字类型转换函数:int().long().float().complex().整数.长整数和浮点数可以通过comp ...
- 嵌入式相关开源项目、库、资料------持续更新中
学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言.单片机.开源项目.物联网.操作系统.Linux.计算机等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资 ...
- 【Vue全家桶+SSR+Koa2全栈开发】项目搭建过程 整合 学习目录(持续更新中)
写在开头 大家好,这里是lionLoveVue,基础知识决定了编程思维,学如逆水行舟,不进则退.金三银四,为了面试也还在慢慢积累知识,Github上面可以直接查看所有前端知识点梳理,github传送门 ...
- 【Spring Boot官方文档原文理解翻译-持续更新中】
[Spring Boot官方文档原文理解翻译-持续更新中] 文章目录 [Spring Boot官方文档原文理解翻译-持续更新中] Chapter 4. Getting Started 4.1. Int ...
- C语言学习笔记Day3——持续更新中... ...
上一篇文章C语言学习笔记Day2--持续更新中- - 八. 容器 1. 一维数组 1.1 什么是一维数组 当数组中每个元素都只带有一个下标(第一个元素的下标为0, 第二个元素的下标为1, 以此类推)时 ...
- 面试1:Java、微服务、架构常见面试题(持续更新中)
Java.微服务.架构常见面试题(持续更新中) 文章目录 Java.微服务.架构常见面试题(持续更新中) ==**Java**== 1.Java概述 (1)JVM.JRE和JDK (2)Java特点 ...
- 【Vue】基础(三)条件渲染 - 列表渲染(key的作用与原理虚拟DOM解析) - 收集表单数据 - 持续更新中
目录 11. 条件渲染 11.1 v-if 11.2 v-show 12. 列表渲染 12.1 v-for(基本列表使用) 12.2 key的作用与原理 真实DOM和其解析流程 虚拟 DOM 的好处 ...
- 【Python全栈开发从入门到实战】持续更新中......
本专栏为Python全栈开发系列文章,技术包括Python基础.函数.文件.面向对象.网络编程.并发编程.MySQL数据库.HTML.JavaScript.CSS.JQuery.bootstrap.W ...
最新文章
- 暑期集训1:C++STL 例3:UVA-12100
- boost::hana::drop_while用法的测试程序
- 数组nn从外围1递增_最完整的PyTorch数据科学家指南(1)
- Codeforces 814C - An impassioned circulation of affection
- 在MaxCompute上分析IP来源的方法
- js数组查找最接近_在JavaScript数组中找到最小元素的位置
- 一次面试总结(记录)
- Vue-router之集成
- git刷新分支列表_如何使用Git小技巧让你开发协作过程更加顺利?
- 拓端tecdat|R语言生存分析: 时变竞争风险模型分析淋巴瘤患者
- java多线程-线程安全
- JVM监控及诊断工具GUI篇之JConsole
- 【ZBrush笔刷】实用笔刷和Alpah下载,及笔刷使用方法
- 无线/移动通信网络基本概念整理
- rs485接口上下拉_RS485使用注意事项(上下拉电阻)
- 元气骑士如何获得机器人成就皮肤_元气骑士:新版本皮肤上架,隐藏皮肤这样才能获得,其实很简单...
- [周鸿祎] 与其苟且活着,不如奋起抗争
- win7下搭建Nginx简单图片服务器
- 技术负责人如何搞定老板之我所见
- eclipse建maven项目报: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0