flask_笔记

1.1Hello World

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'


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

1.2路由

from flask import Flask
app = Flask(__name__)

@app.route('/hello')
def hello_world():
    return '<h1>Hello, World!<h1>'


@app.route('/hi')
def hi():
    return '<h1>hi, hi!<h1>'
if __name__ == '__main__':
    app.run()
from flask import Flask
app = Flask(__name__)

@app.route('/hello',methods=['GET','POST'],endpoint='hello')
def hello_world():
    return '<h1>Hello, World!<h1>'


@app.route('/hi',methods=['GET','POST'],endpoint='hi')
def hi():
    return '<h1>hi, hi!<h1>'
if __name__ == '__main__':
    app.run()

1.3变量规则

from flask import Flask
app = Flask(__name__)

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


if __name__ == '__main__':
    app.run()
from flask import Flask
app = Flask(__name__)
# path 接受包含任何斜杠的文本
# string接受不包含任何斜杠的文本
# int 接收正整数
#float 接收正浮点数
@app.route('/user/<int:id>')
def index(id):
    if id == '1':
        return 'python'
    if id == 2:
        return 'java'
    if id == 3:
        return 'flask'
    return 'hello world'


if __name__ == '__main__':
    app.run()
from flask import Flask
app = Flask(__name__)

@app.route('/user/<float:id>')
def index(id):
    if id == 1.1:
        return 'python'
    if id == 2.2:
        return 'java'
    if id == 3.3:
        return 'flask'
    return 'hello world'


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

1.4自定义转化器

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

app.url_map.converters['re'] = RegexConverter
# <re("1\d{10}"):vlaue>  首字母开头有10位
@app.route('/index/<re("123"):vlaue>')
def index(vlaue):
    return 'hello world'


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

2.1渲染form表单

在这里插入图片描述

from flask import Flask,render_template
app = Flask(__name__)

@app.route('/index')
def index():
    return render_template('index.html')


if __name__ == '__main__':
    app.run()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form>
    账号
    <br> # 换行
    <input type ="text" name="name">
    密码
    <br> # 换行
    <input type ="password" name="password">
    <br> # 换行
    <input type ="submit" name="submit">
</form>

</body>
</html>

2.2request对象

request包含前端发送的所有数据

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()

2.2重定向

from flask import Flask,redirect,url_for
app = Flask(__name__)

@app.route('/index')
def index():
    return redirect(url_for('hello'))
# redirect :重定向

@app.route('/baidu')
def baidu():
    return redirect('https://www.baidu.com')

# url_for :链接到 hello
@app.route('/')
def hello():
    return 'this is hello fun'

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

2.3返回json数据给前端

前后端的数据交互 使用的是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)) # 接收json数据,关闭ensure_ascii
    # response.mimetype = 'application/json'
    # return response
    return jsonify(data)

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

2.4 abort函数

#raise 主动抛出异常
#abort 在网页中主动抛出异常
from flask import Flask,abort,request,make_response,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=='123':
            return 'login success'
        else:
            abort(404)
            return None

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

2.5 自定义异常

在这里插入图片描述

#raise 主动抛出异常
#abort 在网页中主动抛出异常
from flask import Flask,abort,request,make_response,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=='123':
            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()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<img src="../static/a123.jpg" aly="" width="873px" height="626px">
</body>
</html>

2.6 模板的基本使用

#raise 主动抛出异常
#abort 在网页中主动抛出异常
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)

if __name__ == '__main__':
    app.run()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
hello world
<br>
{{ data }}
<br>
{{ data['name'] }}
<br>
{{ data.name }}
<br>
mylist:{{ data.mylist }}
<br>
mylist:{{ data.mylist[1] }}
<br>
count:{{ data.mylist[1]+data.mylist[2] }}
</body>
</html>

2.7 过滤器

#raise 主动抛出异常
#abort 在网页中主动抛出异常
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)

if __name__ == '__main__':
    app.run()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
hello world

<br>
{{'hello_world' | upper}}
<br>
{{'hello_world' | replace('hello','hi')}}
</body>
</html>

2.8 自定义过滤器

#raise 主动抛出异常
#abort 在网页中主动抛出异常
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)

#自定义过滤器
def list_step(li):
    return li[::2]
app.add_template_filter(list_step,'li2')


if __name__ == '__main__':
    app.run()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
hello world

<br>
{{'hello_world' | upper}}
<br>
{{'hello_world' | replace('hello','hi')}}
<br>
mylist列表:{{data.mylist | li2}}
</body>
</html>

3.1 定义表单模型类

#raise 主动抛出异常
#abort 在网页中主动抛出异常
from flask import Flask,render_template
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,SubmitField #类型
from wtforms.validators import DataRequired,EqualTo #验证数据是否为空,验证数据是否相同
app = Flask(__name__)

# 定义表单模型类
class Register(FlaskForm):
    user_name = StringField(label='用户名',validators=[DataRequired('用户名不能为空')])
    password = PasswordField(label='密码',validators=[DataRequired('密码名不能为空')])
    password2 = PasswordField(label='密码', validators=[DataRequired('密码名不能为空'),EqualTo('password')])
    submit = SubmitField(label='提交')
    

@app.route('/register')
def register():
    #创建表单对象
    form = Register()
    return render_template('register.html')


if __name__ == '__main__':
    app.run()
// An highlighted block
var foo = 'bar';

3.2 使用flask表单

#raise 主动抛出异常
#abort 在网页中主动抛出异常
from flask import Flask,render_template,request
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,SubmitField #类型
from wtforms.validators import DataRequired,EqualTo #验证数据是否为空,验证数据是否相同
app = Flask(__name__)
app.config['SECRET_KEY']='ADJAJDA'
# 定义表单模型类
class Register(FlaskForm):
    user_name = StringField(label='用户名',validators=[DataRequired('用户名不能为空')])
    password = PasswordField(label='密码',validators=[DataRequired('密码名不能为空')])
    password2 = PasswordField(label='再一次输入密码', validators=[DataRequired('密码名不能为空'),EqualTo('password')])
    submit = SubmitField(label='提交')


@app.route('/register',methods=['GET','POST'])
def register():
    #创建表单对象
    form = Register()
    if request.method == 'GET':
        return render_template('register.html',form=form)
    if request.method == 'POST':
        username = form.user_name.data
        password = form.password.data
        password2 = form.password2.data
        print('username:',username)
        print('password:',password)
        print('password2:',password2)
        return render_template('register.html',form=form)



if __name__ == '__main__':
    app.run()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    <br>
    {{ form.user_name.label }}
    {{ form.user_name }}
     <br>
    {{ form.password.label }}
    {{ form.password }}
     <br>
    {{ form.password2.label }}
    {{ form.password2 }}
     <br>
    {{ form.submit.label }}
    {{ form.submit }}
</form>
</body>
</html>

3.3 验证器 validate_on_submit

#表单传入的数据 如果正确的话在执行操作

#raise 主动抛出异常
#abort 在网页中主动抛出异常
from flask import Flask,render_template,request
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,SubmitField #类型
from wtforms.validators import DataRequired,EqualTo #验证数据是否为空,验证数据是否相同
app = Flask(__name__)
app.config['SECRET_KEY']='ADJAJDA'
# 定义表单模型类
class Register(FlaskForm):
    user_name = StringField(label='用户名',validators=[DataRequired('用户名不能为空')])
    password = PasswordField(label='密码',validators=[DataRequired('密码名不能为空')])
    password2 = PasswordField(label='再一次输入密码', validators=[DataRequired('密码名不能为空'),EqualTo('password')])
    submit = SubmitField(label='提交')


@app.route('/register',methods=['GET','POST'])
def register():
    #创建表单对象
    form = Register()
    if request.method == 'GET':
        return render_template('register.html',form=form)
    if request.method == 'POST':
        if form.validate_on_submit():
            username = form.user_name.data
            password = form.password.data
            password2 = form.password2.data
            print('username:',username)
            print('password:',password)
            print('password2:',password2)
        else:
            print('验证失败')
        return render_template('register.html',form=form)



if __name__ == '__main__':
    app.run()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值