Flask框架笔记

Flask简单使用(flask)

from flask import Flask #先将flask包导入

app = Flask(__name__)

@app.route('/') #路由
def index(): #定义index函数
    return '首页'  #返回字首页


if __name__ == '__main__':
   app.run()  #运行一下

启动python的flask框架:python xxxx.py

运行结果

图片[1]-Flask框架笔记-松鼠博客

Flask路由(route)

app路由.py

from flask import Flask
app = Flask(__name__)

@app.route('/hello')
def hello():
    return 'hello word!'

@app.route('/hi')
def hi():
    return 'hi!!!'

# @app.route('h1',methods=['GET','POST'],endpoint='h1')
# methods是传参方式,endpoint是指定传参


#string 接受任何不包含斜杠的文本
#int 接受正整数
#float 接受正浮点数
# path 接受包含斜杠的文本
# @app.route('/user/<float:id>')

@app.route('/user/<id>')
def index(id):
    if id=='1':
        return 'python'
    if id==str(2):
        return 'djanggo'
    if int(id)==3:
        return 'flask'
    return 'hello word'


if __name__ == '__main__':
    app.run()

自定义转换器(from werkzeug.routing import BaseConverter)

引入from werkzeug.routing import BaseConverter

from werkzeug.routing import BaseConverter
from flask import Flask

app = Flask(__name__)

class RegexConverter(BaseConverter):
    def __init__(self,url_map,regex):
        #调用父类的方法
        super(RegexConverter,self).__init__(url_map)
        self.regex = regex

    def to_python(self, value):
        #父类的方法 功能已经实现好了
        print('to_python方法被调用')
        return value
#将自定义的转换器类添加到flask应用中
app.url_map.converters['re'] = RegexConverter

@app.route('/index/<re("1\d{10}"):value>')
def index(value):
    print(value)
    return 'hello'

if __name__ == '__main__':
    app.run()

渲染from表单(render_template)

from表单.py

from flask import Flask,render_template

app = Flask(__name__)

@app.route('/index',methods=['GET','POST'])
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run()

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    账号:
    <input type="text" name="name">
    <br>
    密码:
    <input type="text" name="password">
    <br>
    <input type="submit" name="submit">
</form>
</body>
</html>

request对象

request对象.py

 # ruquest包含前端发送过来的所有请求数据
from flask import Flask,render_template,request

app = Flask(__name__)

@app.route('/index',methods=['GET','POST'])
def index():
    if request.method == 'GET':
        return render_template('index.html')
    if request.method == 'POST':
        name= request.form.get('name')
        password = request.form.get('password')
        print(name,password)

        return 'this is post'



if __name__ == '__main__':
    app.run()

index和上面渲染from一样

重定向(redirect)

from flask import Flask,redirect,url_for

app = Flask(__name__)

@app.route('/index')
def index():
    # return redirect('https://baidu.com') #这种重定向到域名
    return redirect(url_for('hello'))   #这种重定向到自己的函数


@app.route('/')
def hello():
    return 'this is hello'


if __name__ == '__main__':
    app.run()

返回json数据给前端

from flask import Flask,make_response,json,jsonify

app = Flask(__name__)

#添加属性
app.config['JSON_AS_ASCII']=False

@app.route('/index')
def index():
    data={
        'name':'张三'
    }
    #第一种方式:
    # response = make_response(json.dumps(data,ensure_ascii=False))
    # response.mimetype = 'application/json'
    # return response

    #第二种方式:
    return jsonify(data)
    # return make_response(json.dumps(data,ensure_ascii=False))
                                        #将ascii关闭


if __name__ == '__main__':
    app.run()

abort函数

#raise 主动抛出异常
#abort 在网页当中抛出异常

from flask import Flask,request,abort,render_template

app = Flask(__name__)

@app.route('/index',methods=['GET','POST'])

def index():
    if request.method == 'GET':
        return render_template('index.html')
    if request.method == 'POST':
        name = request.form.get('name')
        password = request.form.get('password')
        if name == 'zhangsan' and password == '123456':
            return 'login success'
        else:
            abort(404)
            return None

#自定义错误处理方法

@app.errorhandler(404)

def handle_404_error(err):
    return render_template('404.html')


if __name__ == '__main__':
    app.run()

flask模板

# 模板 jinja2

from flask import Flask,render_template

app=Flask(__name__)

@app.route('/index')
def index():
    #如何将数据传递到前端
    data = {
        'name':'张三',
        'age':18,
        'mylist':[1,2,3,4,5,6]
    }
    return render_template('index2.html',data=data)#通过这种方法就能将data数据里面传给前端index2.html

#自定义过滤器
def list_step(li):
    '''自定义过滤器'''
    # 取所有的是::
    return li[::2]
#注册过滤器  第一个值写自定义函数的名字 第二个值写你要用时候的名字
app.add_template_filter(list_step,'list2')


if __name__ == '__main__':
    app.run()

index2.html(templates模板选择jinja2)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
hello word!
{{ data }}
<br>
{#在前端单独拿取json单个数据#}
{{ data['name'] }}
{#第二种方式#}
<br>
{{ data.age }}
mylist:{{ data.mylist }}
mylist取单个:{{ data.mylist[0] }}
<br>
{#计算#}
count:{{ data.mylist[1]+ data.mylist[2] }}
<br>
{#过滤器#}
{{ 'hello_word' | upper }}
<br>
{{ 'hello_word' | title }}
<br>
{#替换字符串内容#}
{{ 'hello_word' | replace('hello','hi') }}
{#自定义过滤器#}
<br>
自定义过滤器{{ data.mylist | list2 }}

</body>
</html>

过滤器学习网站:Template Designer Documentation — Jinja Documentation (3.1.x)

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容