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框架笔记-松鼠博客](https://squirrelblog.com/wp-content/uploads/2024/11/image-16.png)
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
暂无评论内容