2013-02-10 67 views
15

有没有人使用Flask-Security扩展名进行身份验证?我如何获得注册视图的工作?如何使用Flask-Security注册视图?

http://packages.python.org/Flask-Security/customizing.html

我指的是上面的链接。

@app.route('/register', methods=['GET']) 
def register(): 
    return render_template('security/register_user.html') 

我不想扩展默认类,我只想在我的网站布局中包装默认注册视图,所以我这样做了。

{% extends "layout.html" %} 
{% block title %}upload{% endblock %} 
{% block body %} 

{% from "security/_macros.html" import render_field_with_errors, render_field %} 
{% include "security/_messages.html" %} 
<h1>Register</h1> 
<form action="{{ url_for_security('register') }}" method="POST" name="register_user_form"> 
{{ register_user_form.hidden_tag() }} 
{{ render_field_with_errors(register_user_form.email) }} 
{{ render_field_with_errors(register_user_form.password) }} 
{% if register_user_form.password_confirm %} 
    {{ render_field_with_errors(register_user_form.password_confirm) }} 
{% endif %} 
{{ render_field(register_user_form.submit) }} 
</form> 
{% include "security/_menu.html" %} 

{% endblock %} 

我得到以下错误?

werkzeug.routing.BuildError 
BuildError: ('security.register', {}, None) 
+0

可能是它的一个错字,当你张贴在这里,但您的视图功能键入为“regsiter”而不是“register”。 – codegeek 2013-02-10 01:04:46

+0

对不起,这只是我写在这里的一个错字.... – 2013-02-10 01:28:58

回答

0

我还没有真正使用Flask-Security,但Builderror指的是flask无法将security.register视图绑定到URL的事实。安全是蓝图的名称。所以我建议你尝试按以下方式调用该视图。使用security.route代替app.route。

@security.route('/register', methods=['GET']) 
def register(): 
    return render_template('security/register_user.html') 
+0

没有运气,它给了我TypeError:'NoneType'对象不可调用 – 2013-02-10 18:53:49

29

您不需要创建视图。 Flask-Security中包含默认的一个。 你只需要启用它在你的烧瓶应用程序配置:

app = Flask(__name__) 
app.config['SECURITY_REGISTERABLE'] = True 

这样,“/注册”的路线应该工作。
如果需要,还有一个配置值更改URL:

app.config['SECURITY_REGISTER_URL'] = '/create_account' 

其他瓶,安全配置信息可以在这里找到: http://pythonhosted.org/Flask-Security/configuration.html

+1

这个答案帮助我得到了窗体的工作,但对于完整的Flask和像我这样的Python新手:您必须首先在您的应用中初始化安全性。看到这里:http://pythonhosted.org/Flask-Security/quickstart.html我试图启用/注册/端点,但它从来没有工作,因为我从来没有入我的安全实例。 – lawicko 2014-01-16 16:19:34

+0

谢谢你的解决方案。 这已经解决了我的问题,但是我收到了一条不同的错误消息。我会把它留在这里以防万一它有助于未来的Google员工 - 并且希望能够节省我浪费的时间来追踪这个... werkzeug.routing.BuildError:无法为端点'security.register'建立URL你的意思是'security.login'而不是? – Bletch 2017-12-17 19:34:02