<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        教你如何搭建簡易網站:python開發web服務器

        來源:懂視網 責編:小采 時間:2020-11-27 19:30:45
        文檔

        教你如何搭建簡易網站:python開發web服務器

        教你如何搭建簡易網站:python開發web服務器:Python中有數不清的Web框架,從基本的微小架構到完整的架構,它們自有各自的優點。那么你準備使用它來做一些web開發,但在探討細節之前,讓我們從頭開始。目標用已有的豐富圖片資源建一個看圖網站條件開發語言:python3庫:flask :一個開源的python w
        推薦度:
        導讀教你如何搭建簡易網站:python開發web服務器:Python中有數不清的Web框架,從基本的微小架構到完整的架構,它們自有各自的優點。那么你準備使用它來做一些web開發,但在探討細節之前,讓我們從頭開始。目標用已有的豐富圖片資源建一個看圖網站條件開發語言:python3庫:flask :一個開源的python w

        Python中有數不清的Web框架,從基本的微小架構到完整的架構,它們自有各自的優點。那么你準備使用它來做一些web開發,但在探討細節之前,讓我們從頭開始。

        目標

        用已有的豐富圖片資源建一個看圖網站

        條件

        開發語言:

        python3

        庫:

        flask :一個開源的python web服務器框架
        jinja2:flask默認的模板引擎

        編輯器:

        推薦pycharm

        一個最簡單的web服務器

        python給我們提供了一個接口:WSGI:Web Server Gateway Interface
        它只要求Web開發者實現一個函數,就可以響應HTTP請求。而不用觸到TCP連接、HTTP原始請求和響應格式。
        下面實例一個最簡單的web應用:

        # hello.pydef application(environ, start_response):
         start_response('200 OK', [('Content-Type', 'text/html')]) return [b'<h1>Hello, Python web!</h1>']# server.py# 從wsgiref模塊導入:from wsgiref.simple_server import make_server# 導入我們自己編寫的application函數:from hello import application# 創建一個服務器,IP地址為空,端口是8000,處理函數是application:httpd = make_server('', 8000, application)
        print('Serving HTTP on port 8000...')# 開始監聽HTTP請求:httpd.serve_forever()
      1. environ:一個包含所有HTTP請求信息的dict對象;

      2. start_response:一個發送HTTP響應的函數。

      3. 將兩個腳本放在同一目錄下,運行server.py,訪問 http://127.0.0.1:8000 就能看到效果了。

        處理url

        其實web應用,就是對不同url的處理。
        我們將hello.py進行修改

        def application(environ, start_response):
         method = environ['REQUEST_METHOD']
         path = environ['PATH_INFO'] if method=='GET' and path=='/': return handle_home(environ, start_response) if method=='POST' and path='/signin': return handle_signin(environ, start_response)
        ...

        這樣就會處理兩個url,’/’和’/signin’
        當然你可以這么一直寫下去…如果你不嫌累的話。

        使用模板

        既然上面的方法太累太慢,那我們學點高級的:
        flask

        看代碼

        from flask import Flaskfrom flask import request
        
        app = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home():
         return '<h1>Home</h1>'@app.route('/signin', methods=['GET'])def signin_form():
         return '''<form action="/signin" method="post">
         <p><input name="username"></p>
         <p><input name="password" type="password"></p>
         <p><button type="submit">Sign In</button></p>
         </form>'''@app.route('/signin', methods=['POST'])def signin():
         # 需要從request對象讀取表單內容:
         if request.form['username']=='admin' and request.form['password']=='password': return '<h3>Hello, admin!</h3>'
         return '<h3>Bad username or password.</h3>'if __name__ == '__main__':
         app.run()

        注意,這個是單文件。
        來分析這個腳本:
        Flask通過Python的裝飾器在內部自動地把URL和函數給關聯起來。
        啟動運行后,我們訪問
        ‘/’,看到的頁面是一個“HOME”單詞
        ‘/signin’,此刻是通過GET訪問,看到的是一個表單,填寫’admin’和’password’,點擊登錄 ——>
        ‘/signin’,此刻是通過POST訪問,看但的是Hello, admin!或者Bad username or password.

        對于不了解GET與POST和HTML表單的同學,推薦去學習html基礎。

        但這樣還是有些不靈活,用戶訪問看到的內容需要全部寫出來,不能復用,太麻煩

        使用模板引擎

        模板解決了我們上面的問題。先看一段代碼

        from flask import Flask, request, render_templateimport os
        
        app = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home():
         path = '/'
         all_file = os.listdir(path) return render_template('home.html',all_file = all_file)if __name__ == '__main__':
         app.run()

        這里讀取了根目錄下所有文件的名字,將其傳給html模板頁面

        然后,在.py的同目錄下建立目錄templates,這里存放的是我們的模板,模板的特殊在于可以使用python指令及變量在html里

        home.html

        {% for i in all_file %} <a href="/page/{{ i }}">{{ i }}</a>{% endfor %}

        {% %} 中寫的是指令
        {{ }} 中寫的是變量

        所以最終的結果是,會生成多個標簽,標簽的名字就是目錄名。

        以上基礎教程參照廖雪峰。

        那么,基礎已經將完了,接下來就會是成品了:

        成品

        用我們上次爬取的圖片來建站,good idea!
        這里在.py腳本同目錄下建立一個static目錄存放圖片。(圖片放在.py所在目錄外層會鏈接不到)

        #beautiful_pic.pyfrom flask import Flaskfrom flask import requestfrom flask import render_templateimport os
        
        app = Flask(__name__)#顯示所有文件夾@app.route('/',methods=['GET','POST'])def list_all():
         path = './static/mzitu/'
         all_pic = os.listdir(path) return render_template('welcome.html',all_pic = all_pic)#具體展示圖片@app.route('/<path>',methods=['GET','POST'])def list_pic(path):
         #錯誤鏈接無法找到圖片目錄就提示錯誤鏈接
         if(path not in os.listdir('./static/mzitu/')): return render_template('error.html')
         pic_path = './static/mzitu/' + path
         all_pic = os.listdir(pic_path) return render_template('pic.html',title = path,all_pic = all_pic)if __name__ == '__main__': #port為端口,host值為0.0.0.0即不單單只能在127.0.0.1訪問,外網也能訪問
         app.run(host='0.0.0.0',port='2333')

        然后是模板文件
        welcome.html

        <!DOCTYPE html><html lang="en"><head>
         <meta charset="UTF-8">
         <title>歡迎來到福利頁面</title></head><body>
         {% for i in all_pic: %} <a href="/{{i}}">{{i}}</a>
         <br><br>
         {% endfor %}</body></html>

        pic.html

        <!DOCTYPE html><html lang="en"><head>
         <meta charset="UTF-8">
         <title>{{ title }}</title></head><body>
         {% for i in all_pic %} <img src="./static/mzitu/{{title}}/{{i}}" alt="{{i}}">
         <br>
         {% endfor %}</body></html>

        error.html

        <!DOCTYPE html><html lang="en"><head>
         <meta charset="UTF-8">
         <title>出錯了</title></head><body>
         你要訪問的頁面不存在... <br>
         <a href="/">點此返回首頁</a></body></html>

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        教你如何搭建簡易網站:python開發web服務器

        教你如何搭建簡易網站:python開發web服務器:Python中有數不清的Web框架,從基本的微小架構到完整的架構,它們自有各自的優點。那么你準備使用它來做一些web開發,但在探討細節之前,讓我們從頭開始。目標用已有的豐富圖片資源建一個看圖網站條件開發語言:python3庫:flask :一個開源的python w
        推薦度:
        標簽: 網站 簡單 網頁
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 精品97国产免费人成视频| 亚洲精品无码mⅴ在线观看| 中国毛片免费观看| 亚洲区小说区图片区| 亚洲欧美成人av在线观看| 91嫩草国产在线观看免费| 亚洲图片中文字幕| 久久精品免费一区二区喷潮| 亚洲欧洲国产视频| 免费观看黄网站在线播放| 国产精品亚洲综合久久 | 国产区图片区小说区亚洲区| 在线看片人成视频免费无遮挡| 精品国产成人亚洲午夜福利| 最好免费观看韩国+日本| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 黄色网址免费在线观看| 亚洲av丰满熟妇在线播放| 8x网站免费入口在线观看| 国产成+人+综合+亚洲专| 国产色爽免费视频| 一级有奶水毛片免费看| 亚洲视频国产精品| 亚洲免费网站观看视频| 阿v视频免费在线观看| 亚洲线精品一区二区三区| 18禁黄网站禁片免费观看不卡| 亚洲乱码一区二区三区国产精品| 免费人成无码大片在线观看| 国产中文字幕在线免费观看| 亚洲视频在线不卡| 免费二级毛片免费完整视频| 久久免费观看国产99精品| 亚洲日韩久久综合中文字幕| 亚洲国产成人久久综合一区77| 羞羞视频免费网站在线看| 97久久国产亚洲精品超碰热| 国产a v无码专区亚洲av| 亚洲一级毛片免费在线观看| 久久精品国产亚洲AV电影网| 久久夜色精品国产嚕嚕亚洲av|