flask shell-如何设置url_for_ternal=True的服务器名称? [英] Flask shell - how to set server name for url_for _external=True?

查看:14
本文介绍了flask shell-如何设置url_for_ternal=True的服务器名称?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在码头容器中运行的烧瓶应用程序。所有的工作都很好,除了当我想从烧瓶壳中的同一个码头容器中做一些手工工作的时候。问题是url_for(x, _external=True)总是返回https://localhost,不管我如何尝试在shell中设置服务器名称。 显然,我已尝试将SERVER_NAME设置为不更改。

$ python manage.py shell
>>> from flask import current_app
>>> current_app.config['SERVER_NAME'] = 'example.com'
>>> from app import models
>>> models.Registration.send_registration(id=123)
JJJA模板具有: {{ url_for('main.index', _external=True, _scheme='https') }}

这将生成: https://localhost

我想要获得: https://example.com

我使用的是Flask 0.11、Werkzeug 0.11.10和JJIA2 2.8

推荐答案

您的应用程序使用创建应用程序上下文时定义的SERVER_NAME

如果要在shell中执行此操作,可以在设置SERVER_NAME后创建测试请求上下文。

>>> from flask import current_app, url_for
>>> current_app.config['SERVER_NAME'] = 'example.com'
>>> with current_app.test_request_context():
...     url = url_for('index', _external=True)
...
>>> print url
http://example.com/

我们可以在烧瓶代码中使用挖洞来理解它。

Flaskurl_for使用appctx.url_adapter构建此URL。此url_adapter是在AppContext初始化时定义的,并且在shell启动时发生。它调用app.create_url_adapter并使用定义的SERVER_NAME

这篇关于flask shell-如何设置url_for_ternal=True的服务器名称?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆