我知道,那里有一些类似的问题,但我找不到能帮助我的具体答案.所以这是我的问题:
我在一个应用程序上工作,在启动时执行一些gui-initialisations.我要做的一件事就是打电话
NetworkConfigurationManager::updateConfigurations ()
Run Code Online (Sandbox Code Playgroud)
这是一个异步调用updateCompleted(),在完成后发出信号.问题是,我所有其他的gui-initialisations必须等到updateConfigurations()完成.
所以我能做的就是这样:
MyApp::MyApp(QWidget *parent) : ....
{
doSomeInits();
//Now connect the signal we have to wait for
connect(configManager, SIGNAL(updateCompleted()), this, SLOT(networkConfigurationUpdated()));
configManager->updateConfigurations(); //call the async function
}
void MyApp::networkConfigurationUpdated()
{
doSomething();
doRemainingInitsThatHadToWaitForConfigMgr();
}
Run Code Online (Sandbox Code Playgroud)
拆分初始化对我来说似乎不是一个好方法.我认为它使代码更难阅读 - 内容应该保持在一起.另一件事是:因为updateConfiguration()是异步的,用户将能够使用GUI,它还没有给他任何信息,因为我们正在等待updateCompleted().
那么有一种方法可以updateCompleted()在应用程序继续之前等待信号吗?
喜欢:
MyApp::MyApp(QWidget *parent) : ....
{
doSomeInits();
//Now connect the signal we have to wait for
connect(configManager, SIGNAL(updateCompleted()), this, SLOT(doSomething()));
???? //wait until doSomething() is done.
doRemainingInitsThatHadToWaitForConfigMgr(); …Run Code Online (Sandbox Code Playgroud) 我正在编写一个Web应用程序,当用户登录时(并且仅当用户登录时)从第三方服务器接收大量数据.此数据被解析为自定义对象并存储在list().现在,用户在应用程序周围处理这些数据,调用不同的视图(例如发送不同的请求).我不确定在视图函数之间传递对象列表的最佳模式是什么?
我在技术上看到了两种可能性,但在我的情况下两者都有缺点:
我不是一个非常有经验的网络开发人员,所以也许我会监督这个显而易见的事情.那么还有另一种方法在请求之间传递数据吗?也许一些内置烧瓶魔术或持久(到文件或数据库)真的唯一的选择?
我有一个关于URL更改的基本问题.假设我有一个HTML页面http://example.com/create,其中包含带有一些输入字段的表单.从这个输入字段我想创建一个python列表,该列表应该用于生成http://example.com/show_list包含基于python列表值的列表的另一个HTML页面.
所以观点http://example.com/create是:
@app.route('/create', methods=['GET', 'POST'])
def create():
if request.method == 'POST':
some_list = parse_form_data_and_return_list(...)
return render_template( "show_list.html", some_list=some_list) #here's the problem!
return render_template( "create.html")
Run Code Online (Sandbox Code Playgroud)
假设parse_form_data_and_return_list(...)获取用户输入并返回包含某些string值的列表.我在困扰我的那条线上添加了评论.我会在一秒钟内回到它,但首先给你一个http://example.com/show_list应该在用户输入之后加载的页面模板():
{% block content %}
<ul class="list">
{% for item in some_list %}
<li>
{{ item }}
</li>
{% endfor %}
</ul>
{% endblock content %}
Run Code Online (Sandbox Code Playgroud)
基本上这很好用.列表值"传递"到Jinja模板,并显示列表.
如果您现在再次查看我的路由方法,您可以看到我只是在render_template显示该shwo_list页面.对我来说,这有一个缺点.该网址不会更改为http://example.com/show_list,但会保留http://example.com/create.
所以我考虑在方法调用中创建自己route的show_list,而不是直接渲染下一个模板.像这样:create()redirect
@app.route('/show_list') …Run Code Online (Sandbox Code Playgroud)