基于python的Flask web开发 二:配置、变量和重定向

一、需要了解以下几个概念:

1.重定向:是通过各种方法将各种网络请求重新定个方向转到其它位置,分为永久重定向和暂时重定向,举个例子:在某网站中弹到注册界面,注册结束后跳转到网页的主页。

2.GET请求:读取URL所标志的信息;

3.POST请求:给服务器添加信息比如说写注释;

※如果只需要从服务器上获取数据,一般使用GET请求;如果前端需要把数据发送给服务器,一般用POST请求。

二、需要理解以下几个函数:

1.app.config.from_object(app_config[config_name]):使用该函数的前提是导入配置数据的文件,调用该函数其实就是在进行配置,把配置数据写在这个文件里也是可以的,但是单独把配置数据放在一个文件中这样可以更好的管理代码。

2.url_for()(属于url_for扩展库) :①给指定的函数构造 URL。它接受函数名作为第一个参数,也接受对应 URL 规则的变量部分的命名参数。

※什么意思呢?我的理解就是,可以将视图函数直接作为参数传递就去,返回值为该视图函数的路由对应的URL;也可以将视图函数作为第一个参数,URL中的变量作为第二个参数传进去,返回视图函数和传进去变量对应的URL。

②访问静态文件(CSS / JavaScript 等)。 只要在你的包中或是模块的所在目录中创建一个名为 static 的文件夹,在应用中使用 /static 即可访问。

3.jsonify()(属于jsonify扩展库):dic字典转成json字符串,为了让汉字能够正常的变成json字符串而不变成unicode码,需要将JSON_AS_ASCII赋值为FALSE。

※参数传递的两种形式:
    1、作为url的组成部分:/book/1
    2、查询字符串:/book?id=1

4.request.args.get()(属于request扩展库):获取URL参数的函数。

5.redirect()(属于redirect扩展库):传入需要重定向的目标URL作为参数。

6.f语句:f"my age is{num}",花括号里面的内容是变量部分,f语句做的就是,将变量和字符串部分分开,使花括号里面的内容以变量形式呈现。

app.py
#导入所需要的拓展包;
from flask import Flask,jsonify,url_for,redirect,request

#导入配置文件;
import config

app = Flask(__name__)
#启用配置文件中的配置;
app.config.from_object(config)

#【】表示列表,{}表示字典,()表示原组;
#英雄列表,每一个元素都是一个字典
heros = [
    {"id":1,"name":"美国队长"},
    {"id":2,"name":"钢铁侠"},
    {"id":3,"name":"蜘蛛侠"},
    {"id":4,"name":"雷神"},
]

#在@qpp.route上,添加methods参数,这个参数时一个列表类型,可以传递多个方法。
@app.route("/hero/<int:hero_id>",methods=['POST','GET'])
#id作为一个int型的变量,也作为参数传给hero_detail视图函数;
def hero_detail(hero_id):
    for hero in heros:
        if hero_id == hero['id']:
            return hero
    return f"id为{hero_id}的图书没有找到!"

@app.route("/hero/list")
def hero_list():
    for hero in heros:
        hero['url'] = url_for("hero_detail",hero_id = hero['id'])
        #在列表的每一个字典元素中再添加一个元素:url地址;
        #book['url'] = f"/book/{book['id']}"
    return jsonify(heros)#视图函数返回列表内容;

@app.route("/profile")
def profile():
    user_id = request.args.get("id")#获取URL参数的函数;
    if user_id:
        return "个人中心"
    else:
        return redirect(url_for("hello_world"))#实施重定向;
@app.route('/')
def hello_world():  #根目录下的视图函数
    return '<h1>Hello World!<h1>'


if __name__ == '__main__':
    app.run()
#重定向(redirect),访问某个url会提前跳转到另一个url上,分为永久性和暂时性
config.py
#flask所有的函数配置直接在这里进行
JSON_AS_ASCII = False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值