表格如下[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 get(self):
         username = self.get_body_argument('username')
        # self.render('register.html')
        self.render('register.html', username=usernaem)

def post(self):
        pass

也就是说通过是否定义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(
[(r"/",MainHandler)],  
**settings
)

指定端口

工程文件中加入:

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'))
返回带字符串页面
return "Hello World"
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语法对比(持续更新中)相关推荐

  1. Python和Scala和Java的语法对照表(持续更新中)

    泛型 Scala Java def func1(a:String,b:Long): Tuple2[String,Long] =   {     val random=new Random()     ...

  2. python中text函数的语法_Python语法大全(持续更新中ing)

    1.type()函数可以返回任何Python定义的数据类型. Python提供了一些数字类型转换函数:int().long().float().complex().整数.长整数和浮点数可以通过comp ...

  3. 嵌入式相关开源项目、库、资料------持续更新中

    学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言.单片机.开源项目.物联网.操作系统.Linux.计算机等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资 ...

  4. 【Vue全家桶+SSR+Koa2全栈开发】项目搭建过程 整合 学习目录(持续更新中)

    写在开头 大家好,这里是lionLoveVue,基础知识决定了编程思维,学如逆水行舟,不进则退.金三银四,为了面试也还在慢慢积累知识,Github上面可以直接查看所有前端知识点梳理,github传送门 ...

  5. 【Spring Boot官方文档原文理解翻译-持续更新中】

    [Spring Boot官方文档原文理解翻译-持续更新中] 文章目录 [Spring Boot官方文档原文理解翻译-持续更新中] Chapter 4. Getting Started 4.1. Int ...

  6. C语言学习笔记Day3——持续更新中... ...

    上一篇文章C语言学习笔记Day2--持续更新中- - 八. 容器 1. 一维数组 1.1 什么是一维数组 当数组中每个元素都只带有一个下标(第一个元素的下标为0, 第二个元素的下标为1, 以此类推)时 ...

  7. 面试1:Java、微服务、架构常见面试题(持续更新中)

    Java.微服务.架构常见面试题(持续更新中) 文章目录 Java.微服务.架构常见面试题(持续更新中) ==**Java**== 1.Java概述 (1)JVM.JRE和JDK (2)Java特点 ...

  8. 【Vue】基础(三)条件渲染 - 列表渲染(key的作用与原理虚拟DOM解析) - 收集表单数据 - 持续更新中

    目录 11. 条件渲染 11.1 v-if 11.2 v-show 12. 列表渲染 12.1 v-for(基本列表使用) 12.2 key的作用与原理 真实DOM和其解析流程 虚拟 DOM 的好处 ...

  9. 【Python全栈开发从入门到实战】持续更新中......

    本专栏为Python全栈开发系列文章,技术包括Python基础.函数.文件.面向对象.网络编程.并发编程.MySQL数据库.HTML.JavaScript.CSS.JQuery.bootstrap.W ...

最新文章

  1. 暑期集训1:C++STL 例3:UVA-12100
  2. boost::hana::drop_while用法的测试程序
  3. 数组nn从外围1递增_最完整的PyTorch数据科学家指南(1)
  4. Codeforces 814C - An impassioned circulation of affection
  5. 在MaxCompute上分析IP来源的方法
  6. js数组查找最接近_在JavaScript数组中找到最小元素的位置
  7. 一次面试总结(记录)
  8. Vue-router之集成
  9. git刷新分支列表_如何使用Git小技巧让你开发协作过程更加顺利?
  10. 拓端tecdat|R语言生存分析: 时变竞争风险模型分析淋巴瘤患者
  11. java多线程-线程安全
  12. JVM监控及诊断工具GUI篇之JConsole
  13. 【ZBrush笔刷】实用笔刷和Alpah下载,及笔刷使用方法
  14. 无线/移动通信网络基本概念整理
  15. rs485接口上下拉_RS485使用注意事项(上下拉电阻)
  16. 元气骑士如何获得机器人成就皮肤_元气骑士:新版本皮肤上架,隐藏皮肤这样才能获得,其实很简单...
  17. [周鸿祎] 与其苟且活着,不如奋起抗争
  18. win7下搭建Nginx简单图片服务器
  19. 技术负责人如何搞定老板之我所见
  20. eclipse建maven项目报: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0

热门文章

  1. C#基础知识学习(2)string类中的方法
  2. monkey的具体使用及详细说明
  3. SEO的有利因素跟不利因素
  4. 文件解析漏洞总结-Apache
  5. 进入大厂的面试经验(P7)
  6. win2008 mysql端口_Win7系统下SqlServer 2008修改IP端口的方法
  7. JavaScript ES 5 语法 重构 new
  8. 代码复杂度降级的几个实例
  9. Springboot日志log4j的配置
  10. flask学习笔记之flask-migrate