页面上下文的请求与响应方式:
GET:
浏览器告知服务器:只获取页面上的信息并发给我。
这是最常用的方法。
POST:
浏览器告诉服务器:想在URL上发布新信息。
并且,服务器必须确保数据已存储且仅存储一次。
这是HTML表单通常发送数据到服务器的方法。
PUT:
相当于更新,类似POST但是服务器可能触发了存储过程多次,多次覆盖掉旧值。
考虑到传输中链接可能会丢失,在这种情况下浏览器和服务器之间的系统可能安全地第二次接收请求,而不破坏其他东西。
源代码:
1 2 3 4 5 6 7 8 9 10 11
| from flask import Flask,render_template,request from werkzeug.routing import BaseConverter app = Flask(__name__) @app.route('/login', methods=['GET', 'POST']) def login(): return render_template('login.html', method=request.method) if __name__ == '__main__': app.run(debug=True)
|
在templates中建一个login.html的文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>HTTP 方法:{{ method }}</h1> <form method="post"> <div> <input type="text" placeholder="请输入用户名..."> </div> <div> <input type="password" placeholder="请输入密码..."> </div> <input type="submit"> </form> </body> </html>
|
标签:<p>用来放多段大量的文字。
标签:<div>多数用来划分页面的布局、页面规划等。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| from flask import Flask,render_template,request from werkzeug.routing import BaseConverter class RegexConverter(BaseConverter): def __init__(self,url_map,*items): super(RegexConverter, self).__init__(url_map) self.regex=items[0] app = Flask(__name__) app.url_map.converters['regex']=RegexConverter @app.route('/') def hello_world(): return render_template('index.html', title='World!') @app.route('/login', methods=['GET', 'POST']) def login(): if request.method=='POST': username=request.form['username'] password=request.form['password'] else: username=request.args['username'] return render_template('login.html', method=request.method) if __name__ == '__main__': app.run(debug=True)
|