socket:a
模板:b
路由:c
Django:b,c
flask:c,a可以使用其他的wsgi协议的第三方库
用于接收http请求并对请求进行预处理,然后触发flask框架
如果需要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理
pymysql,第三方orm框架
简单的flask:
from flask import Flask
app = Flask(__name__)
app.debug = True # 调试模式
# 配置路由,flask路由基于装饰器
@app.route('/')
def index():
return "hello world"
if __name__ == '__main__':
app.run()
werkzeug作为一个web框架的底层库,例如request,response
from werkzeug.wrappers import Request,Response
@Request.application
def hello(request):
return Response("hello")
if __name__ == '__main__':
from werkzeug.serving import run_simple
run_simple('localhost',4000,hello)
301和302的区别?
301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。
302 Found 请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
字面上的区别就是301是永久重定向,而302是临时重定向。 当然,他们之间也是有共同点的,就是用户都可以看到url替换为了一个新的,然后发出请求。
装饰器执行的流程:
v = app.route()
v(函数)
配置文件:app.config.from_object("python类或类的路径")
app.config.from_object('pro_flask.setting.Testingconfig')
settings.py
request.method 请求方式
args get形式提交的参数
form post形式提交的参数
values 元祖
path
full_path
script_root
url
base_url
url_root
host_url
host