flask shell-如何设置url_for_ternal=True的服务器名称? [英] Flask shell - how to set server name for url_for _external=True?
本文介绍了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屋!
查看全文