Python中有數不清的Web框架,從基本的微小架構到完整的架構,它們自有各自的優點。那麼你準備使用它來做一些web開發,但在探討細節之前,讓我們從頭開始。
目標
用現有的豐富圖片資源建立一個看圖網站
編輯器:
一個最簡單的web伺服器
下面實例一個最簡單的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()
environ:一個包含所有HTTP請求資訊的dict物件;
start_response :一個發送HTTP響應的函數。
處理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) ...
看程式碼
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.
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()
然後,在.py的同目錄下建立目錄templates,這裡存放的是我們的模板,模板的特殊在於可以使用python指令及變數在html裡
home.html
{% for i in all_file %} <a href="/page/{{ i }}">{{ i }}</a>{% endfor %}{% %} 中寫的是指令
{{ }} 中寫的是變數
所以最後的結果是,會產生多個標籤,標籤的名字就是目錄名稱。
以上基礎教學參考廖雪峰。
<!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>###相關推薦:############Eclipse PyDev Django Mysql建構Python web開發環境_MySQL#############初入Web開發,php、python和ruby該學哪一個? ######
以上是教你如何搭建簡易網站:python開發web伺服器的詳細內容。更多資訊請關注PHP中文網其他相關文章!