from flask import Flask
from flask import Blueprint
app=Flask(__name__)
# 创建一个蓝图模板
main_blue=Blueprint('blue_one',__name__)
# 定义视图函数,使用蓝图配置路由
@main_blue.route('/hello')
def index():
return '12345'
# 把蓝图注册到app上
app.register_blueprint(main_blue,url_prefix='/two')
if __name__=='__main__':
app.run()
红色部分需要放到别的地方,然后导包过来
路由
from flask import Flask app=Flask(__name__) @app.route('/') def hello_world(): return "你好" def index(): return "大家好" app.add_url_rule('/index',view_func=index) # @app.route('/')等效于app.add_url_rule('/index',view_func=index)
@app.route('/index3/<int:num1>/<int:num2>') # 可以传两个值 def add(num1,num2): if num1>0 and num2>0: d=num1+num2 return str(d) # 返回值类型 str,dict,tuple, response,WSGI
return '输入的数值不符合要求'
if __name__=='__main__': app.run()
变量规则
from flask import Flask app=Flask(__name__) data={"a":"北京","b":"上海","c":"深圳"} @app.route('/') def hello_world(): return "你好" @app.route('/getcity/<key>') # <int:key>或<float:key>或<path:key>或<uuid:key>,默认是字符串 重点 def get_city(key): print(type(key)) return data.get(key)
@app.route('/add/<int:num>') # 整形 重点 def add(num): print(type(num)) result=num+18 return str(result) @app.route('/add1/<float:money>') # 浮点数 def add1(money): print(type(money)) return str(money) @app.route('/index/<path:p>') # 路径 def get_path(p): print(type(p)) #str类型 print(p) return p @app.route('/test/<uuid:uid>') #uuid格式 cb6ff483-b305-4e84-9e69-547da29cf41b def test(uid): print(type(uid)) return "获取唯一的标识吗"
import uuid # uid=uuid.uuid4() # print(uid)
# 所有的路由搜索规则都是自上而下搜索,在写的路由是唯一. @app.route('/projects/') # 请求路由中不加/,http://127.0.0.1:5000/projects ,不会报错 def projects(): return "the project page" @app.route('/about') # 请求路由中添加/,http://127.0.0.1:5000/about/,会报错显示 Not Found def about(): return "the about page"
@app.route('/index1') def index1(): return Response("<h1>大家好</h1>") # 返回Response对象,return 后面返回的字符其实也是作了一个response对象的封装,最后的返回结果还是response对象
if __name__=='__main__': app.run()
视图
返回值:
response
from flask import Flask from flask import Response from flask import make_response app=Flask(__name__) @app.route('/index1') def index1(): response=Response('<h1> 你过来呀!</h1>') response.set_cookie('name','小小') #可以定制 return response @app.route('/index2') def index2(): one='''' 123 ''' response=make_response(one) response.headers['test001']='6666666666666' # 可以定制 print(response.content_type) return response if __name__=='__main__': app.run()
视图函数----返回值:
类型:字符串,dict,tuple,response,WSGI
response对象 响应对象
response(‘字符串’,headers={key:value})
response=make_response(‘........’)
response.headers['aaa']=‘aaa’
print(response.content_type)
print(response.headers)
print(response.status_code)
print(response.status)
request
在register.html文件中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>用户注册页面</title> </head> <body> <h1>京东注册页面</h1> <div> {#如果是表单提交则必须在表单的元素上添加name属性#} <form action="register2" method="get"> {#method="get"#} <input type="text" name='username' placeholder="输入用户名"> {#name='xxxx'就是传给register2的内容#} <input type="text" name='address' placeholder="请输入地址"> {#name='xxxx'就是传给register2的内容#} <input type="text" name="username2" placeholder="确认用户名"> <input type="submit" value="提交"> </form> </div> </body> </html>
在app1.py文件中
from flask import Flask,request from flask import render_template import json app=Flask(__name__) users=[] @app.route('/index') def index(): print(request.headers) # request对象,对象访问属性,也可以调用方法 return 'welcome everyone!' @app.route('/register') def register(): r=render_template('register.html') # 默认从模板文件夹中找文件 print(r) return r @app.route('/register2',methods=['GET','POST']) # methods=['GET','POST'] 如果没有这个默认的只有get,没有post def register2(): # 获取页面提交的内容 if request.method=='POST': print(request.full_path) #/register2?username=zhao&address=山西# print(request.path) # /register2 # print(request.args) # dict类型 如果请求方法是get 则需要通过request.args取值 # print(request.args.get('username')) # 获取值 # print(request.args.get('address')) print(request.form) # 如果请求方法是post 则需要通过request.form取值 print(request.form.get('username')) print(request.form.get('address')) username=request.form.get('username') username2=request.form.get('username2') address=request.form.get('address') if username==username2: user={'username':username,'address':address} users.append(user) return '注册成功' else: return '不一样' return '不是post' @app.route('/show') def show(): j_str=json.dumps(users) return j_str if __name__=='__main__': print(app.url_map) # 路由规则表 app.run()
render_template的传递过程