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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

【Web开发】Python实现Web服务器(web2py)

發(fā)布時(shí)間:2024/1/1 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Web开发】Python实现Web服务器(web2py) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

🍺基于Python的Web服務(wù)器系列相關(guān)文章編寫(xiě)如下🍺:

  • 🎈【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Flask快速入門(mén))🎈
  • 🎈【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Flask案例測(cè)試)🎈
  • 🎈【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Flask部署上線)🎈
  • 🎈【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Tornado入門(mén))🎈
  • 🎈【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Tornado+flask+nginx)🎈
  • 🎈【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(FastAPI)🎈
  • 🎈【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Bottle)🎈
  • 🎈【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Django)🎈
  • 🎈【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(web2py)🎈
  • 🎈【W(wǎng)eb開(kāi)發(fā)】Python實(shí)現(xiàn)Web服務(wù)器(Sanic)🎈
  • 文章目錄

    • 1、簡(jiǎn)介
    • 2、下載和安裝
    • 3、快速入門(mén)
    • 4、示例測(cè)試
      • 4.1 Say hello
      • 4.2 Let's count
      • 4.3 Say my name
      • 4.4 Postbacks
      • 4.5 An image blog
    • 5、PythonAnywhere
    • 結(jié)語(yǔ)

    1、簡(jiǎn)介

    官方地址:
    http://www.web2py.com

    免費(fèi)開(kāi)源全棧框架,快速開(kāi)發(fā),可擴(kuò)展,安全和可移植數(shù)據(jù)庫(kù)驅(qū)動(dòng)的基于 Web 的應(yīng)用程序。編寫(xiě)和編程 Python (版本 3 和 2.7)。

    web2py是一種免費(fèi)的、開(kāi)源的web開(kāi)發(fā)框架,用于敏捷地開(kāi)發(fā)安全的、數(shù)據(jù)庫(kù)驅(qū)動(dòng)的web應(yīng)用;web2py采用Python語(yǔ)言編寫(xiě),并且可以使用Python編程。web2py是一個(gè)完整的堆棧框架,也就是說(shuō)它包含了開(kāi)發(fā)完整功能的web應(yīng)用所需的所有組件。

    web2py支持CPython(C語(yǔ)言實(shí)現(xiàn))或Jython(Java語(yǔ)言實(shí)現(xiàn))。

    開(kāi)發(fā)web應(yīng)用的兩個(gè)經(jīng)典方法是:

    • 通過(guò)編程生成HTML代碼。
      早期的CGI腳本遵循第一種模型。
    • 將代碼嵌入HTML頁(yè)面中。
      下列腳本遵循第二種模型,例如PHP[php](代碼用PHP編寫(xiě),類似C語(yǔ)言)、ASP(代碼用Visual Basic編寫(xiě))以及JSP(代碼用Java編寫(xiě))腳本。

    web2py由如下組件構(gòu)成:

    • 庫(kù)(libraries):提供web2py核心功能,可通過(guò)編程訪問(wèn)。
    • web服務(wù)器:Rocket WSGI web服務(wù)器。
    • 管理(admin)應(yīng)用:用于創(chuàng)建、設(shè)計(jì)和管理其它web2py應(yīng)用。admin提供了一個(gè)完整的基于web的集成開(kāi)發(fā)環(huán)境(IDE),用于開(kāi)發(fā)web2py應(yīng)用。它還包括其它功能,如基于web的測(cè)試和shell。
    • 示例(examples)應(yīng)用:包含文檔和交互示例。應(yīng)用示例是官方網(wǎng)站web2py.com的副本,并包含epydoc文檔。
    • 歡迎(welcome)應(yīng)用:是其它應(yīng)用的基本構(gòu)建模板。默認(rèn)時(shí),它包含一個(gè)純CSS層疊菜單和用戶認(rèn)證。

      web2py鼓勵(lì)開(kāi)發(fā)人員將數(shù)據(jù)表達(dá)(Model)、數(shù)據(jù)表示(View)和應(yīng)用工作流(Controller)分離。web2py中一個(gè)請(qǐng)求的典型工作流描述如下:

      web2py應(yīng)用程序如下圖所示:
    • 模型 - 表示數(shù)據(jù)表和數(shù)據(jù)庫(kù)表。
    • 控制器 - 描述應(yīng)用程序邏輯和工作流程。
    • 視圖 - 幫助渲染數(shù)據(jù)的顯示。
    • 語(yǔ)言 - 描述如何將應(yīng)用程序中的字符string轉(zhuǎn)換為各種支持的語(yǔ)言。
    • 靜態(tài)文件 - 不需要處理(如圖像,CSS樣式表等)。
    • 關(guān)于和自述 - 項(xiàng)目的細(xì)節(jié)。
    • 錯(cuò)誤 - 存儲(chǔ)應(yīng)用程序生成的錯(cuò)誤報(bào)告。
    • 會(huì)話 - 存儲(chǔ)與每個(gè)特定用戶相關(guān)的信息。
    • 數(shù)據(jù)庫(kù) - 存儲(chǔ)SQLite數(shù)據(jù)庫(kù)和其他表信息。
    • 緩存 - 存儲(chǔ)緩存的應(yīng)用程序項(xiàng)。
    • 模塊 - 模塊是其他可選的Python模塊。
    • 隱私 - 包含的文件由控制器訪問(wèn),但不直接由開(kāi)發(fā)人員訪問(wèn)。
    • 上傳 - 文件由模型訪問(wèn),但不直接由開(kāi)發(fā)人員訪問(wèn)。

    2、下載和安裝

    http://www.web2py.com/examples/default/download


    下載之后解壓如下:

    3、快速入門(mén)

    在Windows操作系統(tǒng)上, 執(zhí)行: web2py.exe

    默認(rèn)情況下,當(dāng)執(zhí)行完命令后,web2py會(huì)顯示開(kāi)始界面和一個(gè)控件讓你設(shè)置administrator密碼和網(wǎng)站啟動(dòng)的IP和端口地址。默認(rèn)情況下web2py會(huì)啟動(dòng)在127.0.0.1:8000這個(gè)地址上(就是本機(jī)的8000端口),但你可以選擇啟動(dòng)在可用的IP和端口上。你可以命令行查詢可用的IP地址,在Windows上運(yùn)行ipconfig,在OS X和Linux上運(yùn)行ifconfig。當(dāng)前我們假設(shè)web2py已經(jīng)啟動(dòng)在本機(jī)的8000端口上(127.0.0.1:8000)。如果web2py啟動(dòng)在0.0.0.0:8000上則使用所有可用的網(wǎng)卡。

    • 現(xiàn)在我們點(diǎn)擊按鈕start server:
    • 點(diǎn)擊按鈕admin:
    • 輸入密碼之后,點(diǎn)擊登陸按鈕:

    這個(gè)頁(yè)面顯示所有安裝在web2py上安裝的應(yīng)用,并且可以用admin賬戶管理。 web2py默認(rèn)包含3個(gè)應(yīng)用:

    • 一個(gè)admin應(yīng)用,就是你正在使用的。
    • 一個(gè)examples應(yīng)用,包含在線的文檔和一個(gè)web2py主頁(yè)的仿制品。
    • 一個(gè)welcome應(yīng)用,這是一個(gè)基本的模板用來(lái)制作其他應(yīng)用。如果你創(chuàng)建新的應(yīng)用,這個(gè)應(yīng)用就是模板,包含歡迎界面。

    在啟動(dòng)web2py應(yīng)用程序之后,使用上述URL,我們可以使用管理界面創(chuàng)建一個(gè)新模塊,例如“XiaoMu”。管理界面將要求密碼進(jìn)行認(rèn)證,因?yàn)楣芾韱T擁有添加和編輯任何新的Web應(yīng)用程序的所有權(quán)限。

    讓新應(yīng)用程序的名稱為“XiaoMu”。一旦創(chuàng)建了新的應(yīng)用程序,用戶被重定向到包含相應(yīng)應(yīng)用程序的視圖,模型和控制器的頁(yè)面。

    用戶可以通過(guò)提及以下URL來(lái)查看新創(chuàng)建的應(yīng)用程序:http://127.0.0.1:8000/XiaoMu
    默認(rèn)情況下,用戶可以在點(diǎn)擊上述URL時(shí)查看以下屏幕。用于打印給定的網(wǎng)絡(luò)應(yīng)用程序的消息的“XiaoMu”,該變化在由default.py控制器。

    # ---- example index page ---- def index():response.flash = T("Hello World,愛(ài)看書(shū)的小沐!")return dict(message=T('Welcome to web2py,愛(ài)看書(shū)的小沐!'))


    web2py包括執(zhí)行創(chuàng)建,檢索,更新和刪除功能的應(yīng)用程序。該CRUD周期描述了一個(gè)數(shù)據(jù)庫(kù),這是執(zhí)著的基本功能。所有的應(yīng)用程序邏輯都寫(xiě)在模型中,這些模型由控制器檢索并在視圖的幫助下顯示給用戶。
    web2py提供了一個(gè)用于管理,創(chuàng)建和刪除表或數(shù)據(jù)庫(kù)的界面,這被稱為“appadmin”。在實(shí)現(xiàn)表背后的邏輯之前,有必要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)及其關(guān)聯(lián)的表。
    訪問(wèn)appadmin的URL:http://127.0.0.1:8000/XiaoMu/appadmin
    在點(diǎn)擊URL時(shí),用戶將獲得與給定應(yīng)用程序關(guān)聯(lián)的表的列表。

    在前面,我們已經(jīng)學(xué)會(huì)了如何使用GUI部件啟動(dòng)web2py服務(wù)器。
    可以通過(guò)從命令行提示符啟動(dòng)服務(wù)器來(lái)跳過(guò)此窗口。

    python web2py.py -a"你的密碼"-i 127.0.0.1 -p 8000

    每當(dāng)web2py服務(wù)器啟動(dòng)時(shí),它都會(huì)創(chuàng)建一個(gè)文件“ parameters_8000.py ”,其中所有密碼都以散列形式存儲(chǔ)。為了更安全的目的,可以使用以下命令行 -

    python web2py.py -a "<recycle>" -i 127.0.0.1 -p 8000

    4、示例測(cè)試

    4.1 Say hello

    • default.py修改如下(Controller):
    def index():return dict(message=T('Welcome to web2py,愛(ài)看書(shū)的小沐!'))
    • default/index.html修改如下(View):

      For debugging purposes you can always append:{{=response.toolbar()}}
    <html><head></head><body><h1>{{=message}}</h1></body> </html>
    • 瀏覽器訪問(wèn)如下:

    4.2 Let’s count

    • default.py修改如下(Controller):
    def index():if not session.counter:session.counter = 1else:session.counter += 1return dict(message="Welcome to web2py,愛(ài)看書(shū)的小沐!", counter=session.counter)
    • default/index.html修改如下(View):
    <html><head></head><body><h1>{{=message}}</h1><h2>Number of visits: {{=counter}}</h2></body> </html>
    • 瀏覽器訪問(wèn)如下:

    4.3 Say my name

    • default.py修改如下(Controller):
    def first():return dict()def second():return dict()
    • 新增default/first.html如下(View):
    {{extend 'layout.html'}} What is your name? <form action="second"><input name="visitor_name" /><input type="submit" /> </form>
    • 新增default/second.html如下(View):
    {{extend 'layout.html'}} <h1>Hello {{=request.vars.visitor_name}}</h1>
    • 瀏覽器訪問(wèn)如下:
    http://127.0.0.1:8000/XiaoMu/default/first


    4.4 Postbacks

    • default.py修改如下(Controller):
    def first():form = SQLFORM.factory(Field('visitor_name', requires=IS_NOT_EMPTY()))if form.process().accepted:session.visitor_name = form.vars.visitor_nameredirect(URL('second'))return dict(form=form)def second():return dict()
    • 新增default/first.html如下(View):
    {{extend 'layout.html'}} What is your name? {{=form}}
    • 新增default/second.html如下(View):
    {{extend 'layout.html'}} <h1>Hello {{=session.visitor_name or "anonymous"}}</h1>
    • 瀏覽器訪問(wèn)如下:

    4.5 An image blog

    創(chuàng)建一個(gè)新的應(yīng)用:xiaomu_images,
    然后編輯它。

    • db.py修改如下(Model):
    db = DAL("sqlite://storage.sqlite")db.define_table('image',Field('title', unique=True),Field('file', 'upload'),format = '%(title)s')db.define_table('comment',Field('image_id', db.image),Field('author'),Field('email'),Field('body', 'text'))db.image.title.requires = IS_NOT_IN_DB(db, db.image.title) db.comment.image_id.requires = IS_IN_DB(db, db.image.id, '%(title)s') db.comment.author.requires = IS_NOT_EMPTY() db.comment.email.requires = IS_EMAIL() db.comment.body.requires = IS_NOT_EMPTY()db.comment.image_id.writable = db.comment.image_id.readable = False

    瀏覽器訪問(wèn):http://127.0.0.1:8000/xiaomu_images/appadmin

    依次通過(guò)界面添加圖片記錄到數(shù)據(jù)庫(kù)中:

    • default.py修改如下(Controller):
    def index():images = db().select(db.image.ALL, orderby=db.image.title)return dict(images=images)def show():image = db(db.image.id==request.args(0)).select().first()db.comment.image_id.default = image.idform = SQLFORM(db.comment)if form.process().accepted:response.flash = 'your comment is posted'comments = db(db.comment.image_id==image.id).select()return dict(image=image, comments=comments, form=form)def download():return response.download(request, db)
    • 新增default/show.html(View):
    {{extend 'layout.html'}} <h1>Image: {{=image.title}}</h1> <center> <img width="200px"src="{{=URL('download', args=image.file)}}" /> </center> {{if len(comments):}}<h2>Comments</h2><br /><p>{{for comment in comments:}}<p>{{=comment.author}} says <i>{{=comment.body}}</i></p>{{pass}}</p> {{else:}}<h2>No comments posted yet</h2> {{pass}} <h2>Post a comment</h2> {{=form}}
    • 瀏覽器訪問(wèn):http://127.0.0.1:8000/xiaomu_images/default/show/1

    5、PythonAnywhere

    • (1)打開(kāi)web2py首頁(yè)
    http://web2py.com/

    • (2)點(diǎn)擊按鈕:try it now online

    • (3)填寫(xiě)用戶名后,點(diǎn)擊give me my web2py

    • 訪問(wèn)網(wǎng)址如下:http://xiaomu.pythonanywhere.com/welcome/default/index

    結(jié)語(yǔ)

    如果您覺(jué)得該方法或代碼有一點(diǎn)點(diǎn)用處,可以給作者點(diǎn)個(gè)贊,或打賞杯咖啡;╮( ̄▽ ̄)╭
    如果您感覺(jué)方法或代碼不咋地//(ㄒoㄒ)//,就在評(píng)論處留言,作者繼續(xù)改進(jìn);o_O???
    如果您需要相關(guān)功能的代碼定制化開(kāi)發(fā),可以留言私信作者;(????)
    感謝各位大佬童鞋們的支持!( ′ ▽′ )ノ ( ′ ▽′)っ!!!

    總結(jié)

    以上是生活随笔為你收集整理的【Web开发】Python实现Web服务器(web2py)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。