flask__路由之转换器,,cbv的简要认识,,模版,,请求响应__Request->http,,Response,,
DEFAULT_CONVERTERS = { 'default': UnicodeConverter, 'string': UnicodeConverter, 'any': AnyConverter, 'path': PathConverter, 'int': IntegerConverter, 'float': FloatConverter, 'uuid': UUIDConverter, }
from flask import Flask, jsonify app = Flask(__name__) app.debug = True # @app.route('/<name>') # 默认 # @app.route('/<string:name>') # 字符串 @app.route('/<int:name>') # 数字 @app.route('/<path:name>') # 路由,带 / def index(name): return 'hello' + str(name) if __name__ == '__main__': app.run()
from flask import Flask, jsonify app = Flask(__name__) app.debug = True ###1 FBV 咱们一直写 @app.route('/') def index(): return 'hello' ###2 cbv from flask.views import MethodView # 1 写类 class UserView(MethodView): def get(self): return '我是get' def post(self): return '我是post' # 2 注册路由 # as_view必须加一个字符串---》是路由的别名 # endpoint 和 as_view(name= 路由别名),以谁为准? # 读源码后,知道了,以 endpoint 为准 # 如果endpoint 没传--》endpoint是 view_func.__name__ 视图函数的名字 ,别名就是函数名 # 如果endpoint 没传,as_view(name= 路由别名)也没传---》去视图函数名字-->视图函数都是:view # as_view(name= 路由别名) 有什么用? 把view的名字改为了,你传入的字符串名 app.add_url_rule('/user', 'user', UserView.as_view('user')) if __name__ == '__main__': app.run()
模板
from flask import Flask, jsonify, render_template from markupsafe import Markup app = Flask(__name__, template_folder='temp') app.debug = True @app.route('/') def index(): # 1 字符串 # 2 字典 user = {'name': 'lqz', 'age': 19} # 3 函数 def add(a, b): return a + b a='<a href="">点我看美女</a>' a=Markup(a) return render_template('index.html', name='lqz', age=19, user=user,add=add,a=a) if __name__ == '__main__': app.run()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div>{{name}}</div>
<div>{{age}}</div>
<h3>列表取值</h3>
<!--<p>{{列表[0]}}</p>-->
<hr>
<h3>字典取值</h3>
<p>{{user.name}}</p>
<p>{{user.get('age')}}</p>
<hr>
<h3>函数</h3>
<p>{{add(7,8)}}</p>
<h3>循环</h3>
<h4>逻辑判断</h4>
{% if name %}
<h1>Hello {{ name }}!</h1>
{% else %}
<h1>Hello World!</h1>
{% endif %}
<h3>xss攻击</h3>
<!--{{a|safe}}-->
{{a}}
<h3>模板的include</h3>
<h3>模板的extends</h3>
</body>
</html>
# 请求相关信息 # request.method 提交的方法 # request.args get请求提及的数据 # request.form post请求提交的数据 # request.values post和get提交的数据总和 # request.cookies 客户端所带的cookie # request.headers 请求头 # request.path 不带域名,请求路径 # request.full_path 不带域名,带参数的请求路径 # request.script_root # request.url 带域名带参数的请求路径 # request.base_url 带域名请求路径 # request.url_root 域名 # request.host_url 域名 # request.host 127.0.0.1:500 # request.files # obj = request.files['the_file_name'] # obj.save('/var/www/uploads/' + secure_filename(f.filename))
#四件套 return "字符串" return render_template('html模板路径',**{}) return redirect('/index.html') return jsonify({'k1':'v1'}) # 向响应中写cookie # response = make_response(render_template('index.html')) # response是flask.wrappers.Response类型 # response.delete_cookie('key') # response.set_cookie('key', 'value') # response.headers['X-Something'] = 'A value' # return response # 向响应头 res = make_response('hello') res.headers['xx']='uu' return res
浙公网安备 33010602011771号