http请求
请求 | 描述 |
---|---|
GET | 默认的请求方式,从服务器获取资源 |
POST | 提交资源到服务器 |
HEAD | 类似GET请求,但是只返回请求资源的头部,不返回实际资源 |
DELETE | 请求服务器删除资源 |
PUT | 请求服务器替换或者修改资源 |
OPTIONS | 请求服务器返回某资源支持的所有http请求方法 |
PATCH | 请求服务器替换或者修改局部资源 |
app.route默认使用GET请求
那如何修改http请求?
#只接受POST方法
@app.route('/test',methods=['POST'])
def test():
return "POST页面"
#可以接受POST和GET方法
@app.route('/test',methods=['POST','GET'])
def test():
return "POST和GET页面"
此外还有简便写法,称之为快速路由
@app.get('/test')
def test():
return "POST和GET页面"
#两种写法的效果相同
@app.route('/test',methods=['GET'])
def test():
return "POST页面"
所有的快捷路由
@app.get()
@app.post()
@app.put()
@app.delete()
@app.patch()
页面重定向
永久性重定向一般用于域名更替,例如网站更换了域名,但是老的域名还是有很多人访问
暂时性重定向一般用于状态的判断,例如没有登录就跳转到登录界面
@app.route('/test')
def test():
return "login"
@app.route('/redire')
def redire():
name = request.args.get('name')
#没有name参数就跳转到/test
if not name:
return redirect('/test')
else:
return "user"
这里的
return redirect(‘/test’)
相当于程序自动访问了/test
如果程序写成这样,访问/redire没有拿到name变量时就会跳转到/redire1,redire1是能拿到pass变量的
@app.route('/test')
def test():
return "login"
@app.route('/redire')
def redire():
name = request.args.get('name')
if not name:
return redirect('/redire1?pass=2')
else:
return "redire"
@app.route('/redire1')
def redire1():
password = request.args.get('pass')
if not password:
return redirect('/test')
else:
return "redire1"
构造url
url_for是一个用于动态构造url的函数
它的第一个参数是视图函数
@app.route('/sadsaddasdasd')
def test():
return "login"
@app.route('/urlfor')
def url_for1():
url=url_for("test")
return url
这里输出的结果是
/sadsaddasdasd
装饰器和url可能会经常改动,但是视图函数一般不会变动
如果要传参url,就正常在后面加参数
@app.route('/sadsaddasdasd')
def test():
return "login"
@app.route('/urlfor')
def url_for1():
url = url_for("test", a=1, b="hello")
return url
结果是
/sadsaddasdasd?a=1&b=hello