日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flask/Django/Tornado语法对比(持续更新中)

發(fā)布時間:2023/12/31 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flask/Django/Tornado语法对比(持续更新中) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

表格如下[1](加入了一些自己想到的補充):

?

?FlaskDjangoTornado
請求方式限定

@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函數(shù)來限定請求方式

調試模式

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.pyapplication = 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")
接受前端返回的數(shù)據(jù)(post)username = request.form.get("username")username = request.POST.get("username")username = self.get_argument("username")
從數(shù)據(jù)庫査數(shù)據(jù)?? ? 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沒找到數(shù)據(jù)會報錯,但是filter沒找到不會報錯 user = user.objects.get(id=1) # filter、all

基本和flask一致,但是其query需要帶表名,

user = session.query(Person).

filter_by(name=username)

寫入數(shù)據(jù)庫?? ?person = Person()
? ??? ?person.name = username
? ??? ?try:
? ? ? ? db.session.add(person) ?# 成功提交
? ? ? ? db.session.commit() ? # 保存
? ? except:
? ? ? ? db.session.rollback() ?# ?失敗回滾
? ? ? ? db.session.flush() ? # 刷新緩沖區(qū)
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區(qū)別

[2]如何開啟Tornado的調試模式

?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的Flask/Django/Tornado语法对比(持续更新中)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。