开始学习Python和Flask作为学习练习,来自PHP/Symfony2,我可以在表单中添加一个隐藏的_method字段,用DELETE或PUT覆盖POST方法.
似乎Flask本身并不支持这种做法,而且我一直在讨论包括http://flask.pocoo.org/snippets/38/在内的各种想法,这些想法有效,但涉及将覆盖放在表单动作中,而不是而不是作为隐藏字段,IMO使URL看起来不雅观.
上述地址的注释中有一个片段,它使_method从路由角度工作,但正如在那里讨论的那样,如果您尝试访问视图中的request.form,则会导致请求挂起.
有人有解决方法吗?如果没有,我会把所有的东西都当作POST来处理,但能够找到一种让它工作的方法会很好.
干杯.
编辑:这是任何想要看一看的人的代码:
模板:
<form action="{{ url_for('login') }}" method="POST">
<input type="hidden" name="_method" value="PUT">
<input class="span12" name="email" type="text" placeholder="E-mail address" value="{{ email }}">
<input class="span12" name="password" type="password" placeholder="Your password">
<a href="{{ url_for('reset_password') }}" class="forgot">Forgot password?</a>
<div class="remember">
<input id="remember-me" type="checkbox">
<label for="remember-me">Remember me</label>
</div>
<input class="btn-glow primary login" type="submit" name="submit" value="Log in">
</form>
Run Code Online (Sandbox Code Playgroud)
应用程序/ __ init__.py
from flask import Flask
from werkzeug.wrappers import Request
class MethodRewriteMiddleware(object):
def __init__(self, app, input_name='_method'):
self.app = app
self.input_name = …Run Code Online (Sandbox Code Playgroud) 我一直在环顾四周,而且自己没有写一个基本的,我找不到一个已经存在的Ember库,它在页面顶部显示一个小的加载行,当所有的http请求都已完成时页面转换(无论是图像加载,JSON被提取等).
对于Angular有这个:http://chieffancypants.github.io/angular-loading-bar/,但想知道Ember是否已经有任何选择.
干杯.
编辑:我发现这篇文章也是关于一个jQuery插件,我想这可以改编:http://tutorialzine.com/2013/09/quick-tip-progress-bar/.仍然热衷于听到有人知道已经集成到Ember请求生命周期中的任何事情.
有一种情况我想有两种类型的界面.一个是默认应用程序,另一个是登录屏幕等的全屏模式.
玩了一会儿之后,我想我会尝试在应用程序模板中使用两个命名出口:
{{outlet main}}
{{outlet alternative}}
Run Code Online (Sandbox Code Playgroud)
然后我有一个主模板:
{{partial "wrapper"}}
{{outlet}}
{{partial "footer"}}
Run Code Online (Sandbox Code Playgroud)
哪个被渲染{{outlet main}}(我使用的是Ember App Kit,所以下面相当于App.ApplicationRoute = Ember.Route.extend({...):
export default Ember.Route.extend({
renderTemplate: function() {
this._super();
this.render('master', {
outlet: 'main',
into: 'application'
});
},
});
Run Code Online (Sandbox Code Playgroud)
现在,问题在于我想要吹掉主模板,并且完全具有与页面不同的外观和感觉,例如全屏登录页面,没有包装器/侧边栏或页脚.
我以为我可以{{outlet main}}在LoginRoute中使用disconnectOutlet 停用,只需将新的登录模板推送到{{outlet alternative}}:
export default Ember.Route.extend({
renderTemplate: function() {
this.disconnectOutlet({
outlet: 'main',
into: 'application'
});
this.render('login', {
outlet: 'alternative',
into: 'application'
});
},
});
Run Code Online (Sandbox Code Playgroud)
但是,这{{outlet main}}仍然会被渲染(我想是由于ApplicationRoute - LoginRoute的renderTemplate没有覆盖它?),登录模板在它下面渲染(也就是说,在页面下方/折叠下方).
有谁知道如何在Ember中完成这个UI的完整切换?