3月7日学习记录

IntYou (^_^)

路由系统


路由的两种写法

1
app.add_url_rule('/index', 'index', index)
1
@app.route('/inddex')

路由加载源码的流程

  • 将URL和函数打包成为Rule对象

  • 将Rule对象添加到map对象中

  • app_url_map = map对象

动态路由

1
2
3
@app.route('/index/<string:name>')
def index(name):
return f'{name}'

uuid类型 类似于xxxxx-xxxxxxx-xxxxxx-xxxxxx

自定义路由

必须继承BaseConverter

1
2
3
4
5
6
7
8
9
10
11
from werkzeug.routing import BaseConverter
class RegexConverter(BaseConverter):
def __init__(self, map, regex):
super().__init__(map)
self.regex = regex

def to_python(self, value):
return value


app.url_map.converters['regex'] = RegexConverter

视图


FBV

1
@app.route('/user', method=['GET', 'POST'])

CBV

1
2
3
4
5
6
7
8
9
10
11
class UserView(views, MethodView):
method = ['GET', 'POST']
decorators = [test1, test2] //CBV添加装饰器
def get(self):
return 'get'

def post(self):
return 'post'


app.add_url_rule('/user', view_func=UserView.as_view('user'))

模板(jinja2)


基本用法

模板可继承

  1. 被继承:

    {% block content %} ? {% endbloack %}

  2. 继承:

    {% extends 'layout.html' %} {% block content %} ? {% endbloack %}

  3. 引入:

    {% include 'from.html' %}

1
2
3
4
def dunc(arg):
return arg

render_template('md.html', nums=nums, f=func) //可以传递函数名

定义全局模板方法

1
2
3
4
5
6
7
8
9
10
11
@app.template_glabol() //模板中全局使用 {{ func('haha') }}
def func(arg):
return arg

@app.template_filter() //模板全局使用 {{ 'haha'|f('e') }}
def f(arg,h):
return arg + h

@app.route('/md/hg')
def index():
return render_template('md_hg.html')

如果想要将一个方法限制为一个蓝图域中使用,只需将app修改即可

特殊装饰器


1
2
3
4
5
6
7
8
9
10
11
12
@app.before_request //视图函数运行前运行
def f1():// 一旦返回值为真,则停止行为向下传播(判断用户登录等), 反之空,则继续
print('f1')

@app.after_request //视图函数运行结束后运行
def f2(response): //视图函数有返回值,就必须返回一个Responce
print('f2')
return response

@app.route('/index')
def index():
return render_template('index.html')

app.before_request(func)不加装饰器使用

  • 标题: 3月7日学习记录
  • 作者: IntYou
  • 创建于: 2023-03-07 00:23:24
  • 更新于: 2023-03-21 01:48:11
  • 链接: https://intyou.netlify.app/2023/03/07/3月7日学习记录/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
此页目录
3月7日学习记录