整理我遇到的 Python 的疑难问题
1 如果字典里一个键指向一个实例,深拷贝会拷贝出一个新的实例吗?
不会:
class foo:
    def __init__(self):
        print('do init foo')
        
a = {'cls': foo()}
a
# -------------------
do init foo
{'cls': <__main__.foo at 0x7fd18a246590>}
# -------------------
import copy;
b = copy.deepcopy(a)
# -------------------
b
{'cls': <__main__.foo at 0x7fd18a247a50>}
2 jinja2 怎么不转意的输出 html
目标是把下图中 <h2>内容正常 extend 到 html里面。

在 jinja 变量后面加个 safe 即可:
        {{ post.content.get('html')|safe }}
ref: https://flask.palletsprojects.com/en/2.2.x/templating/#controlling-autoescaping
3 多个装饰器时的顺序问题
比如自定义了一个多线程装饰器 async_exc:
def async_exc(func):
    def wrap(*args, **kwargs):
        Thread(target=func, args=args, kwargs=kwargs).start()
    return wrap
它和staticmethod一起装饰一个函数时,要把staticmethod放到最外面。
4 flask jinja2 模板里面有哪些环境变量?
jinja2 variable in flask:
ref: https://flask.palletsprojects.com/en/2.2.x/templating/#standard-context
我的需求是第一次访问 web 时,设置这个 site config,然后把这个配置显示到 jinja2 模板里
app = Flask(__name__)
app.secret_key = getenv('DETA_PROJECT_KEY')
app.config['site_info'] = db.get('site_info')
@app.route('/', methods=["GET"])
def index():
    if not app.config['site_info']:
        return redirect(url_for('setup'))
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号