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')) |
| 返回帶字符串頁面 | 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语法对比(持续更新中)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦幻西游一天能卖多少旗子
- 下一篇: 齐鲁证券改名叫什么