小编Mik*_*kin的帖子

如何从多个模板文件夹加载Flask蓝图?

我学会了如何创建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项目的名称.

python jinja2 blueprint flask

8
推荐指数
1
解决办法
2925
查看次数

Authlib 客户端错误:请求和响应中的状态不相等

我正在尝试实现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)

flask authlib

4
推荐指数
1
解决办法
5205
查看次数

在pyyaml中表示具有相同基类的不同类的实例

我有一些单元测试,并希望将每个测试运行的结果存储为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)

python yaml pyyaml

2
推荐指数
1
解决办法
787
查看次数

标签 统计

flask ×2

python ×2

authlib ×1

blueprint ×1

jinja2 ×1

pyyaml ×1

yaml ×1