我学会了如何创建Flask蓝图,并可以为使用Jinja2模板的非烧瓶产品创建蓝图,并在烧瓶项目中使用它们.我做这样的事情:
# blueprint code
from flask import Blueprint
from pkg_resources import resource_filename
app = Blueprint('formgear', __name__,
template_folder=resource_filename('formgear', 'templates'))
Run Code Online (Sandbox Code Playgroud)
现在我想添加另一组模板,这些模板与我的非Flask项目逻辑连接,但仅限Flask.我完全不确定它是否很好,但有没有办法从一个蓝图传播两个模板文件夹?并将两个模板设置为整个Flask项目?
注意:formgear是我的非Flask项目的名称.
我正在尝试实现authlib客户端和服务器。我以 OAuth2.0 示例为例,并按照教程在 Flask 站点上进行了我自己的客户端授权。这是我的代码:
from flask import Flask, redirect, url_for, session, request
from authlib.flask.client import OAuth
from authlib.client.errors import OAuthException
APP_ID = 'KBtRDO3r2HETjw4TcLznthoj'
APP_SECRET = '3g4C6nbJcTIYX3jyCIEmf6KE8h8pzxUhjy6ArlY3AEgj1snv'
app = Flask('testa_client')
app.debug = True
app.secret_key = 'development'
oauth = OAuth()
oauth.init_app(app)
remote = oauth.register(
'testa',
client_id=APP_ID,
client_secret=APP_SECRET,
# request_token_params={'scope': 'base'},
base_url='http://127.0.0.1:5000',
access_token_url='http://127.0.0.1:5000/auth/token',
authorize_url='http://127.0.0.1:5000/auth/connect'
)
@app.route('/')
def index():
return redirect(url_for('login'))
@app.route('/login')
def login():
callback = url_for(
'websa_authorized',
next=request.args.get('next') or request.referrer or None,
_external=True
)
return remote.authorize_redirect(callback=callback)
@app.route('/login/authorized')
def websa_authorized():
resp …Run Code Online (Sandbox Code Playgroud) 我有一些单元测试,并希望将每个测试运行的结果存储为YAML文件以供进一步分析.YAML格式的转储数据以多种方式满足我的需求.但测试属于不同的西装,结果有不同的父类,这是我的例子:
>>> rz # shorthand for result
[<upstream_suite.fftest.SimpleTest testMethod=test_is_fsType_not_set>,
<upstream_suite.openfolder.UfoOpenTest testMethod=test_is_A>,
<upstream_suite.openfolder.UfoOpenTest testMethod=test_is_A_a_glyph_instance>,
<upstream_suite.openfolder.UfoOpenTest testMethod=test_is_ended_ufo>,
<upstream_suite.openfolder.UfoOpenTest testMethod=test_is_folder>,
<upstream_suite.openfolder.UfoOpenTest testMethod=test_is_fsType_eq_1>,
<upstream_suite.openfolder.UfoOpenTest testMethod=test_it_exists>]
# etc.
Run Code Online (Sandbox Code Playgroud)
每个测试都可以有自己的父类.
>>> type(rz[0]) == type(rz[1])
False
Run Code Online (Sandbox Code Playgroud)
我已经使用__getstate__方法为所有类添加了我自己的基类,但由于某些原因它不起作用:
>>> rz[0].__getstate__()
{'targets': ['upstream'], 'methodDoc': 'Is the OS/2 table fsType set to 0?', 'methodName': 'test_is_fsType_not_set', 'tool': 'FontForge', 'name': 'upstream_suite.fftest'}
>>> yaml.safe_dump(rz[0])
*** RepresenterError: cannot represent an object: test_is_fsType_not_set (upstream_suite.fftest.SimpleTest)
Run Code Online (Sandbox Code Playgroud)
Documentations说我可以为每个类创建代表,所以我尝试了并编写了这段代码:
import yaml
from somepath import MyTestCase
def repr_testcase(dumper, data):
return dumper.represent_mapping(u'tag:yaml.org,2002:map', {
'methodDoc': data._testMethodDoc,
'tool': data.tool,
'name': data.name, …Run Code Online (Sandbox Code Playgroud)