小编Spa*_*ide的帖子

访问应用工厂中定义的Flask扩展

我正在使用app工厂模式来设置我的Flask应用程序.我的应用程序使用Flask-Babel扩展,也在工厂中设置.但是,我想在蓝图中访问扩展程序以便使用它,

工厂在__init__.py.

def create_app(object_name):
    app = Flask(__name__)
    app.config.from_object(object_name)

    babel = Babel(app)

    app.register_blueprint(main_blueprint)
    app.register_blueprint(category_blueprint)
    app.register_blueprint(item_blueprint)

    db.init_app(app)
    return app
Run Code Online (Sandbox Code Playgroud)

我想将以下内容添加到main.py:

@babel.localeselector
def get_locale():
    if 'locale' in session:
        return session['locale']
    return request.accept_languages.best_match(LANGUAGES.keys())

@application.route('/locale/<locale>/', methods=['GET'])
def set_locale(locale):
    session['locale'] = locale
    redirect_to = request.args.get('redirect_to', '/')
    return redirect(redirect_to)     # Change this to previous url
Run Code Online (Sandbox Code Playgroud)

遗憾的是,main.py无法babel从应用程序工厂访问变量.我该如何解决这个问题?

python babel flask

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

Flask babel 不能进行简单的翻译?

好的,我有以下应用程序:

babel.cfg

[python: **.py]
[jinja2: **/templates/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_
Run Code Online (Sandbox Code Playgroud)

露西/初始化.py

babel = Babel()

def create_app(object_name):
  app = Flask(__name__)
  app.config.from_object(object_name)

  app.register_blueprint(main_blueprint)
  app.register_blueprint(category_blueprint)
  app.register_blueprint(item_blueprint)

  babel.init_app(app)
  db.init_app(app)
  return app


@babel.localeselector
def get_locale():
  return 'de'
Run Code Online (Sandbox Code Playgroud)

露西/控制器/main.py

main_blueprint = Blueprint(
    'main',
    __name__,
    template_folder='../templates/main',
)

@main_blueprint.route('/debug')
def debug():
  print get_locale()
  return gettext('A simple string')
Run Code Online (Sandbox Code Playgroud)

我运行了以下命令:

  1. pybabel 提取物 -F babel.cfg -o messages.pot 。
  2. pybabel init -i messages.pot -d 翻译 -l de
  3. pybabel 编译 -d 翻译/

这是我的项目结构的样子:

.
|-- README.md
|-- babel.cfg
|-- fabfile.py
|-- lucy
|   |-- …
Run Code Online (Sandbox Code Playgroud)

python flask flask-babel python-babel

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

本地包的 Pip 冻结

我有一个应用程序,刺猬(https://github.com/qfq8wf77qwf8/hedgehog-test),我正在heroku上部署它。这是文件结构:

\n\n
hedgehog/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Procfile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hedgehog\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app.db\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 simple_page\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 models.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 views.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 views.pyc\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hedgehog.egg-info\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 PKG-INFO\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 SOURCES.txt\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dependency_links.txt\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 top_level.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 requirements.txt\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py\n
Run Code Online (Sandbox Code Playgroud)\n\n

关于我的设置的一些注意事项:

\n\n
    \n
  • 我有 setup.py 在本地安装刺猬。这允许我的所有文件通过导入刺猬访问此应用程序
  • \n
  • 我有requirements.txt,因为这是Heroku 推荐的。
  • \n
  • setup.py 基本上是我将这个目录打包为要在本地安装的应用程序的工具。
  • \n
\n\n

目前,我hedgehog通过本地安装应用程序pip install -e .\n这工作正常 - 我可以使用flask run和运行我的应用程序heroku local运行我的应用程序。我还可以在 heroku 上部署这个应用程序。

\n\n

我唯一的问题是,当我执行 pip freeze …

python git pip heroku

5
推荐指数
0
解决办法
680
查看次数

Celery工人提前退出不会调用on_failure

我有以下代码:

class StatusTask(automata_celery.Task):

  def on_success(self, retval, task_id, args, kwargs):
    with app.app_context():
      cloaker = Cloaker.query.get(args[0])
      cloaker.status = RemoteStatus.LAUNCHED
      db.session.commit()

  def on_failure(self, exc, task_id, args, kwargs, einfo):
    with app.app_context():
      cloaker = Cloaker.query.get(args[0])
      cloaker.status = RemoteStatus.ERROR
      db.session.commit()


@celery.task(base=StatusTask)
def deploy_cloaker(cloaker_id):
  """To prevent launching while we are launching, we will
  disable launching until the cloaker's status is LAUNCHED
  """
  cloaker = Cloaker.query.get(cloaker_id)
  if not cloaker.can_launch():
    return

  cloaker.status = RemoteStatus.LAUNCHING
  db.session.commit()

  host = cloaker.server.ssh_user + '@' + cloaker.server.ip
  execute(fabric_deploy_cloaker, cloaker, hosts=host)


def fabric_deploy_cloaker(cloaker):
  domain = …
Run Code Online (Sandbox Code Playgroud)

python celery

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

你如何在 VSCode 的拆分编辑器中打开文件?

我有这个:

在此处输入图片说明

我想添加一个键盘快捷键,以便它会在一个新的拆分窗口中打开文件,如下所示:

在此处输入图片说明

在我的 keybinding.json 中,此操作的名称是什么?

visual-studio-code

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

Flask Json请求400记录?

我编写了自己的自定义客户端,通过我的wifi卡将原始http请求发送到我的烧瓶网络服务器.

这就是典型的请求:

Content-Length: 214
User-Agent: blah
Connection: close
Host: 1.2.3.4:5000
Content-Type: application/json

{"data":[{"scoutId":2,"message":"ph=5.65"},{"scoutId":4,"message":"ph=4.28"},{"scoutId":3,"message":"ph=4.28"},{"scoutId":2,"message":"ph=5.65"},{"scoutId":4,"message":"ph=4.28"},{"scoutId":3,"message":"ph=4.30"}]}
Run Code Online (Sandbox Code Playgroud)

有时,我的客户搞砸了并将错误的JSON请求发送到我的烧瓶服务器.通常,烧瓶只会显示:

1.2.3.5 - - [01/Sep/2014 22:13:03] "POST / HTTP/1.1" 400 -
Run Code Online (Sandbox Code Playgroud)

并没有提供有关请求的信息.

我想跟踪在我的环境中产生400的每个请求,并分析导致这些错误的原因.

我在哪里可以将自定义错误功能放在我的烧瓶服务器中?

python flask

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

为什么"except:"能够捕获此错误但不能"除了Exception,e:"?

我有以下文件:

from fabric.api import env, execute, run

env.hosts = ['1.2.3.4']

def taskA():
    run('ls')

def main():
  try:
    execute(taskA)
  except:
    print "Exception Caught"

main()
Run Code Online (Sandbox Code Playgroud)

我运行时可以看到"Exception Caught"打印出来:

$ python test.py
[1.2.3.4] Executing task 'taskA'
[1.2.3.4] run: ls

Fatal error: Timed out trying to connect to 1.2.3.4 (tried 1 time)

Underlying exception:
    timed out

Aborting.
Exception Caught
Run Code Online (Sandbox Code Playgroud)

但是,当我将其切换为:

def main():
  try:
    execute(taskA)
  except Exception, e:
    print "Exception Caught", e

main()
Run Code Online (Sandbox Code Playgroud)

我没有看到异常被捕获:

[1.2.3.4] run: ls

Fatal error: Timed out trying to connect to 1.2.3.4 (tried …
Run Code Online (Sandbox Code Playgroud)

python fabric

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

如何为Flask-Admin添加摘要行?

在flask-admin index_view中,我正在显示行的财务信息。

我想在index_view表的底部添加一个额外的行“摘要行”,该行汇总所有列。

我该怎么做?

在此处输入图片说明

python flask-admin

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

我应该用两种方法实现一个接口还是用两个接口实现?

我有两个性质相似的类,但它们具有不同的功能签名。我正在考虑拥有两个接口还是拥有一个接口。让我举例说明:

方法一:两个接口

public interface RaceCar {

    CompletableFuture<Double> drive(final Wheel arg1, Tactic tactic);

}

public interface Bus {

    CompletableFuture<Double> drive(final String someOtherKey, final Controller arg2);
}
Run Code Online (Sandbox Code Playgroud)

一个抽象类 AbstractCar 在两者之间共享逻辑:

public abstract AbstractCar { 
    // Add shared logic here... 
} 
Run Code Online (Sandbox Code Playgroud)

以及实施。


public class RaceCarImpl extends AbstractCar implements RaceCar {
... 
}


public class BusImpl extends AbstractCar implements Bus {
...
}
Run Code Online (Sandbox Code Playgroud)

结果:2 个接口、1 个抽象、2 个实现 = 5 个文件。

方法二:一个接口,两种方法

public interface Vehicle { 

    CompletableFuture<Double> drive(final Wheel arg1, Tactic tactic);

    CompletableFuture<Double> drive(final String …
Run Code Online (Sandbox Code Playgroud)

java

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

Arduino内存泄漏

我正在 Pinoccio 上运行一些代码,它是 Arduino 的一个分支。我在下面的代码中泄漏了内存,并且我已经包含了我的程序运行与时间的内存占用。

过去几个小时我一直在调试为什么我的内存正在慢慢泄漏,所以我决定试一试这个论坛。

#include <SPI.h>
#include <Wire.h>
#include <Scout.h>
#include <GS.h>
#include <bitlash.h>
#include <lwm.h>
#include <js0n.h>
#include <QueueArray.h>
#include <Oyoroi.h>
#include <aJSON.h>
#include <MemoryFree.h>


#define SERVER_LOCATION "1.2.3.4"
#define SERVER_PORT 5000

int INTERVAL_QUERY_SERVER = 10000;

struct OMessage {
  int scoutId;
  String message;
  int messageKey;
};

QueueArray<OMessage*> queue;
GSTcpClient *clientPtr;
GSModule *gsPtr;

bool isOyoroiVerbose = 0;


void setup() {
  Scout.setup("Custom", "Unknown", -1);
  Serial.begin(115200);

  Shell.isVerbose = false;
  Shell.eval("rm *");      // Clean up previous installations
  Shell.eval("hq.verbose(0)");
  Shell.eval("events.verbose(0)");
  Shell.eval("mesh.verbose(0)");

  addBitlashFunction("oyoroi.verbose", (bitlash_function) …
Run Code Online (Sandbox Code Playgroud)

c++ memory-leaks arduino

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

删除 facebook.com 的 Chrome HSTS 不起作用

我目前正在我的网站上进行一些调试,其中涉及调用 facebook API。

我已经安装了 dnsmasq 与我的 mac os X 一起使用,将所有请求重定向到 facebook.com 到 127.0.0.1

我有一个回显服务器,它将在我的笔记本电脑上的端口 80 上打印出所有原始的 http 请求标头。

现在我的问题来了。当我访问 facebook.com 时,我意识到 chrome 会自动将 http:// 转发到 https:// for facebook.com

我用谷歌搜索并找到了删除这个 HSTS 问题的方法。我chrome://net-internals#hsts去看看是这样的:

HSTS 镀铬图像

在“删除域”下输入“facebook.com”后,我仍然可以在下面的输入框中查询“facebook.com”。

我尝试清除 chrome 上的所有用户数据,关闭并重新打开 chrome,甚至使用隐身模式。

  • 为什么 chrome 仍在将所有对 facebook.com 的请求重定向到 https?

  • 如果chrome://net-internals#hsts不可靠,我该如何禁用它?

ssl google-chrome hsts

0
推荐指数
1
解决办法
2843
查看次数

Java 格式化:保留行但修复缩进

我有以下代码:

DSPOTTGuaranteedUserReachForecastModel model = new DSPOTTGuaranteedUserReachForecastModel(
    mockCache,
    demand,
    mockTargetingDatabaseHelper,
    programType,
    region);
Run Code Online (Sandbox Code Playgroud)

正确的缩进应该是每条不完整的行缩进两个。理想情况下,我希望我的文本编辑器将我的代码格式化为这样:

DSPOTTGuaranteedUserReachForecastModel model = new DSPOTTGuaranteedUserReachForecastModel(
        mockCache,
        demand,
        mockTargetingDatabaseHelper,
        programType,
        region);
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试使用 VSCode 对其进行格式化时,所有新行都折叠成一长行。

DSPOTTGuaranteedUserReachForecastModel model = new DSPOTTGuaranteedUserReachForecastModel(mockCache, demand,
        mockTargetingDatabaseHelper, programType, region);
Run Code Online (Sandbox Code Playgroud)

有谁知道保留行号的规则的名称是什么?

java format visual-studio-code

0
推荐指数
1
解决办法
1593
查看次数