小编Nic*_*ach的帖子

如何在我的页面上嵌入Flask-Security登录表单?

使用Flask-Security提供的示例代码,我可以正常访问路径中的login_user.html表单,/login并且工作正常.但是,我想在左上角的所有网站页面上嵌入登录表单.我以为我可以使用Jinja {% include "security/login_user.html" %}语句来放置表单base.html,但这似乎不起作用.我收到以下错误:

jinja2.exceptions.UndefinedError: 'login_user_form' is undefined
Run Code Online (Sandbox Code Playgroud)

有没有办法在另一个模板中包含或嵌入登录表单,仍然可以访问相应的表单对象?

python jinja2 flask flask-security

10
推荐指数
2
解决办法
1560
查看次数

我如何使pyinvoke使用python3?

这个问题与类似,但并不完全相同。

我安装了python2.7和python3.5。我可以从命令行使用脚本之一运行脚本。我当前的默认“ python”是python2。

我有一个需要运行pyinvoke的python3脚本,该脚本通常是使用invoke <task>命令行中的命令运行的。即使当我设置使用python3的虚拟环境时,invoke仍然使用python2。

我认为关于虚拟环境我缺少什么?

我目前唯一的解决方法是仅为python3安装pyinvoke。然后它将在python3下运行。

有人知道如何设置它以与虚拟环境一起使用吗?

python virtualenv python-3.x pyinvoke

6
推荐指数
1
解决办法
509
查看次数

在 Flask 请求中更改标头的最佳做法是什么?

我有一个 Flask 应用程序,它使用自定义装饰器来验证在 HTTP 标头属性中传递的 AWS Cognito 登录令牌。该过程包括刷新令牌(这超出了本问题的范围)。获得刷新的令牌后,我想更新标头属性以包含刷新的令牌并退出。由于 Flask/Werkzeugrequest.headers属性是不可变的,我无法通过正常方式更新它。

如何在此装饰器的上下文中更新标题?有没有我没有想到的更好的方法?

下面是一些演示该问题的示例代码:

def login_required(f):
    @wraps(f)
    def decorated_function(*args, **kwargs):
        token = request.headers.get('X-MyApp-Auth')
        if not token:
            return redirect(url_for('login', next=request.url))
        # Test for expired token (pseudocode)
        if expired(token):
            # Refresh the token (pseudocode)
            new_token = refresh(refresh_token)
            # This is the part where the immutability gets me stuck
            request.headers.set('X-MyApp-Auth', new_token)
        return f(*args, **kwargs)
    return decorated_function
Run Code Online (Sandbox Code Playgroud)

http werkzeug http-headers flask

6
推荐指数
1
解决办法
1514
查看次数

根据日期范围合并数据框

我有两个大熊猫dataframes:一个(df1)有三列(StartDate,EndDate,和ID)和第二(df2)用日期.我想合并df1df2基于df1.StartDate和之间的df2.Date df2.EndDate.

每个日期范围df1都是唯一的,不会与数据框中的任何其他行重叠.

日期格式化YYYY-MM-DD.

python python-2.7 pandas

5
推荐指数
1
解决办法
5331
查看次数

为类和静态方法配置lru_cache

我试图lru_cache在Python3中使用,以加快我们的Salesforce数据库中的常见查询.下面是相关的代码,它应该a)将不可散列的参数转换为可散列的参数,以及b)为这些对象启用lru缓存.

当我尝试这个代码时,缓存适用于调用没有参数的函数,但它似乎没有用参数缓存函数调用.另外,我不知道如何为装饰函数订购装饰器.

注意,我在这里使用类和静态方法的类,所以我可以覆盖不同子类的getget_all方法Resource.

请解释我做错了什么或者做得更好.

from functools import lru_cache
from functools import wraps

class Resource(object):

    def hash_dict(func):
        """Transform mutable dictionnary
           Into immutable
           Useful to be compatible with cache
        """
        class HDict(dict):
            def __hash__(self):
                return hash(frozenset(self.items()))

        @wraps(func)
        def wrapped(*args, **kwargs):
            args = tuple([HDict(arg) if isinstance(arg, dict) else arg for arg in args])
            kwargs = {}
            for k, v in kwargs.items():
                if isinstance(v, dict):
                    kwargs[k] = HDict(v)
                elif isinstance(v, list):
                    kwargs[k] = tuple(v)
                else:
                    kwargs[k] …
Run Code Online (Sandbox Code Playgroud)

python lru python-3.x

5
推荐指数
2
解决办法
1409
查看次数

如何将具有LFS支持的存储库移动到gitlab.com?

我有一个旧githost实例的存储库,我正在尝试将其迁移到gitlab.com.我使用他们的指示迁移,而是因为这个仓库使用LFS,我得到了一些错误,我无法弄清楚如何解决.这是我正在运行的命令

cd repo
git remote rename origin old-origin
git remote add origin git@gitlab.com:group/repo.git
git push -u origin --all
git push -u origin --tags
Run Code Online (Sandbox Code Playgroud)

以下是我从git第一个push命令获得的响应示例:

remote: GitLab: LFS objects are missing. Ensure LFS is properly set up or try a manual "git lfs push --all".
To https://gitlab.com/group/repo.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://gitlab.com/group/repo.git'
Run Code Online (Sandbox Code Playgroud)

我尝试了建议的命令(git lfs push --all),该命令无效.我也尝试过git lfs push origin master,结果如下:

Uploading …
Run Code Online (Sandbox Code Playgroud)

git gitlab git-lfs

5
推荐指数
1
解决办法
358
查看次数

Flask 解析 GET 请求时仅返回单个参数

我正在尝试使用 Flask 在 REST API 上创建过滤器,但当查询字符串中重复相同的键时,Flask 似乎只返回单个参数。

例如:

from flask import Flask
from flask import jsonify
from flask import request
app = Flask(__name__)

@app.route('/')
def hello_world():
    return jsonify(request.args)
Run Code Online (Sandbox Code Playgroud)

对于请求<localhost>/?test=a&test=b,结果是:

{
  "test": "a"
}
Run Code Online (Sandbox Code Playgroud)

由于我想重用filter参数来表示 AND 逻辑进行过滤,如果 Flask 支持这一点会很方便。我意识到,Flask 在幕后将其解析request.args为 MultiDict 对象,这可能就是它无法返回多个同名键的原因。

我假设我可以在 Flask 中以某种方式访问​​原始查询字符串,但我还没有找到。如果我遇到解决方案,我会更新这篇文章,但如果其他人有想法,请分享。

python flask

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

Cognito 刷新令牌是否“有效”的 JSON Web 令牌?

我一直在尝试验证 Amazon Cognito 身份提供商通过他们的 boto3 python 客户端返回的“刷新令牌”。我一直在https://jwt.io使用验证器。

当我将刷新令牌粘贴到“编码”框中时,它返回一个标题:

{
  "cty": "JWT",
  "enc": "A256GCM",
  "alg": "RSA-OAEP"
}
Run Code Online (Sandbox Code Playgroud)

但该工具还在底部显示“无效签名”。

我想知道这是否是预期的行为?AWS Cognito 刷新令牌是否不是有效的 JWT?

amazon-web-services jwt amazon-cognito

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

在 PostgreSQL 中使用 NULL 值更新 JSONB 列

我正在尝试更新以下内容y.data,它是当前包含 NULL 值的 JSONB 类型列。该||命令似乎无法y.datax.datawhen x.datais NULL 合并在一起。x.data当包含 JSONB 值时它工作正常。

这是一个示例查询。

UPDATE x
SET x.data = y.data::jsonb || x.data::jsonb
FROM (VALUES ('2018-05-24', 'Nicholas', '{"test": "abc"}')) AS y (post_date, name, data)
WHERE x.post_date::date = y.post_date::date AND x.name = y.name;
Run Code Online (Sandbox Code Playgroud)

x.data修改此查询以支持更新具有现有值或为 NULL 的行的最佳方法是什么?

sql postgresql json sql-update jsonb

3
推荐指数
1
解决办法
4283
查看次数

根据另一列的值从一列复制值

我正在尝试根据第四列中的值填充其他两列中的一列中的值。

我有一个包含四列的 Pandas 数据框:A、B、C、D

df_copy = df.copy()
for i, row in df.iterrows():
    if 'Test' in row.D:
        df_copy.loc[i, 'A'] = row.B
    elif 'Other' in row.D:
        df_copy.loc[i, 'A'] = row.C
Run Code Online (Sandbox Code Playgroud)

这有效,但速度很慢。有没有更有效的方法?

python python-2.7 pandas

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