flask学习入门(三)

文章介绍了Flask框架中如何处理不同的HTTP请求,如GET、POST、HEAD等,并展示了如何限定路由只接受特定类型的请求。同时,讲解了页面重定向的用法,包括临时和永久重定向。此外,还详细阐述了如何使用`url_for`构造动态URL以及视图函数参数的传递。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值