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()

cbv

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-->http请求中得东西,都能从request中取出来

 # 请求相关信息
    # 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))

Response

#四件套
    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

 

posted @ 2024-02-29 13:12  拆尼斯、帕丁顿  阅读(10)  评论(0)    收藏  举报