3月6日 学习记录

IntYou (^_^)

唯一的URL/重定向行为


route内的元素表示不同,将有不同的限制

1
2
3
4
5
6
7
@app.route('/projects/')
def projects():
return 'a'

@app.route('/about')
def about():
return 'b'

如果使用没有斜杠的/projects访问,Flask会自动帮助添加斜杠,因此中规中矩,却有两种访问方式。

如果使用有斜杠的/about/访问,将会返回一个404未找到错误,可以保证URL唯一性,并有助于搜索引擎重复索引同一个界面!

flask的session


flask的session是以加密保存在浏览器上的,依赖于secret_key

数据库连接池


使用数据库连接池可以很好的解决链接数据库时,重复连接的问题

可以将数据库连接封装成一个函数或者类,方便调用

With上下文管理(简)

1
2
3
4
5
6
7
8
9
10
class Foo(object):

def __enter__(self):
return 124

def __exit__(self, exc_type, exc_val):
pass
obj = Foo()
with obj as f:
print(f)

with一个对象会调用对象中的 属性__enter__ ,结束后调用属性__exit__。

使用上下文管理操控线程池的开关,可以实现线程自动化

引入静态文件


1
<img src={{ url_for('static', filename='mm.jpg') }} />

1
<img src='/static/mm.jpg' />

在使用static_url_path=’/xx’修改static文件夹路径时,前一个可以在不做修改下实现自动识别static路径。后者需要一个一个修改,不利于使用。

配置文件


使用函数加载配置文件:

app.config.from_object('config.settings')

使用配置文件:

app.config['xx']

  1. 可以使用localsettings在本地测试, 覆盖settings, 保护原始文件

    在settings添加:

    1
    2
    3
    4
    try:
    from localsettings import *
    except ImportError:
    pass

        在上传服务器时,可以方便的在服务器和本地切换

        使用.gitgnore控制上传文件,忽略不需要的文件

  1. 类配置文件

    1
    2
    3
    4
    5
    class Dev(obj):
        HOST = 1.1.1.1

    class Prod(obj):
    HOST = 1.1.1.1

        使用类隔离开发环境

小知识


  1. 进程是cpu中执行的最小单元,线程是cpu中资源调度的最小单元,一个进程内可以有多个线程

  2. 接口
    其他语言 :
    接口是以interface关键字开头,内部定义方法,但不具体实现,专门用于约束实现类
    类中可以有多个接口继承

    python :
    无接口,可以多继承
    但不能继承多个类

  3. 构造函数和析构函数
    构造函数:用于创建对象的函数 class foo(obj)
    析构函数:用于销毁对象的函数 del obj()

  4. 重写和重载的区别
    重载:函数名相同而参数类型,个数,返回值不同
    重写:在子类中,对父类的方法重写

  5. 抽象类和抽象方法
    java :
    抽象类中可以有抽象方法也可以有普通方法。
    抽象类被继承后需要实现抽象方法

  • 标题: 3月6日 学习记录
  • 作者: IntYou
  • 创建于: 2023-03-06 13:21:41
  • 更新于: 2023-03-09 12:24:23
  • 链接: https://intyou.netlify.app/2023/03/06/3月6日学习记录/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。