授课:林德尧(泉舟时代-未来城市技术总监)
flask基本框架
整个hello.py程序脚本就是把前面介绍的三部分合并到个文件中。 程序代码如下示例2-1 hllopy:
一个完整的Flask程序
from flask import Flask
from flask_script import Manager
from Demoapp.views import bluedemo
app = Flask(__name__)
manager = Manager(app=app)
app.register_blueprint(bluedemo)
if __name__ == '_main__':
manager.run()
debug是否开启调试模式,开启后修改python的代码会自动重启port启动指定服务器的端口号host主机,默认是127.0.0.1
Tr:要想运行这个程序,请确保激活了你之前创建的虚拟环境,并在其中安装了Flsk现在打开Web别览器,在地址栏中输入h/1/ 00.0000图2-1是浏览精连接到程序后的示意图。
flask知识点
**代码结构**
static静态资源文件
templates模板文件
默认两个都可以直接使用
直接使用相对路径就好模板渲染
render template O
其实也是分为两个过程,加载和道染
静态使用,相当于反向解析
url_ for( 'static filename= mysc.cBs
pintirequesthesi
pinmiequest coo
。pinvequest rensole ada)
#刘览器身份
ptintpequestuse. 3ogen
Tetum需求
类字典的数费构
与字典的区别,可以存在相同的
angsltom都基|mm tetu服橡
mmubeMutiea中数据获取方式
actpunamejiaict gm’unamen
获key对应的所有值
dctgetuvamne
Response
服务器返回会始客户端的数器
由程序员创建,ABRasporo时家
1.真接返同Response对像
2.通过maks, response (aia.codey
code状杰网
3返区文本内容,状志码
4.避回楼板(本质和一样
重定向
readieal)
utor教名数albei
route规则
写法;
<converter: variable name>
converter类型
string
接收任何没有斜杠()的文件(默认)
int接收整型
float
接收浮点型
path
接收路径,可接收斜线(")
uuid
只接受uuid字符串,唯码,-种生成规则
any
可以同时指定多种路径,进行限定I
和枚举,集合的意思差不s
@app.route(any/<any(a,.f):an>*)
def any (any)
print(an)
- Request
- Response
。视图函数返回接收两种类型
●
Response对象
●
字符串
●针对字符串会帮我们包装成Response
。返回内容
返回的字符串
。
render_ emplate
。添加第二个参数,可以控制返回的状态码
数据正常,返回错误状态码
make_ response
制作一个响应进行返回
Response
直接创建Response进行返回
其实最终返回的都是Response对象
返回JSON
。 jsonify将数据格式化为json格式,同时设置返回类型为applicatinjson
●json.dumps将数据格式化为json格式,没有设返回的数据类型,默认类型早textcml
@app.route(lrequest', Gethods="GET])
def request1():
print(request)
print(type(request))
print(request.method)
print(request.data)
# arguments歌数tget请求参数,
print(request.args)
# post相关请求都会有数据
print(request.form)
ImmutableMultiDict
类似字典的数据结构
与字典的区别,可以存在相同的键
args和form都是ImmutableMultiDict的对象
ImmutableMultiDict中数据获取方式
dict"uname’]或dict.get(‘uname’)
获取指定key对应的所有值
dict.getlistuname’)
Response
服务器返回会给客户端的数据
由程序员创建,返回Response对象
1.直接返回Response对象
2.通过make_ response (data,code)
-data返回的数据内容
- code状态码
3.返回文本内容,状态码
4.返回模板(本质和3-样)
重定向
redirect()
urt for(函数名’,参数=value)
demo1
@app.route("/response)
def resp():
result= render_ template('demo03.htm')
print(result)
print(type(result))
returm'人工智能,403
demo2
response = make_ response('<h2> 实践操作</h2>', 404)
response = Response("啦啦啦德玛西亚,status=606) #跟上面-样
print(response)
print(type(response))
return response
@app.route('request", methods=['GET')
def request1():
print(request)
print(type(request)
print(request.method)
print(request.data)
# arguments歌数↑get请求参数,
print(request.args)
# post相关请求都会有数据
print(request.form)
print(request.files)
print(request.cookies)
# print(request.remote_ addr)
#浏览器身份
print(request.user_ agent)
return请求
methods='GET, 'POST; 'DELETE]
@app.routet(/rule" .methods='GET,POST])
def hello():
print(request