如何使用Flask-Security寄存器视图?

Chi*_*mar 16 python flask flask-extensions 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')
Run Code Online (Sandbox Code Playgroud)

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

{% 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 %}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误?

werkzeug.routing.BuildError
BuildError: ('security.register', {}, None)
Run Code Online (Sandbox Code Playgroud)

dcr*_*dcr 33

您无需创建视图.Flask-Security中包含默认值.您只需要在烧瓶app配置中启用它:

app = Flask(__name__)
app.config['SECURITY_REGISTERABLE'] = True
Run Code Online (Sandbox Code Playgroud)

有了这个,'/ register'路线应该有效.
如果需要,还有另一个配置值可以更改URL:

app.config['SECURITY_REGISTER_URL'] = '/create_account'
Run Code Online (Sandbox Code Playgroud)

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

  • 这个答案帮助我使表格生效,但是对于像我这样的完整Flask和Python新手来说:您必须首先在应用程序中初始化安全性。请参阅此处:http://pythonhosted.org/Flask-Security/quickstart.html我试图启用/ register /端点,但是它从未起作用,因为我从未初始化过我的安全实例。 (2认同)
  • 谢谢你的解决方案。这解决了我的问题,但我收到了不同的错误消息。我将把它留在这里,以防它对未来的 Google 员工有帮助 - 并希望节省我在尝试追踪此问题上浪费的时间... werkzeug.routing.BuildError:无法为端点“security.register”构建 URL,是吗?意思是“security.login”? (2认同)

cod*_*eek -1

我还没有真正使用过 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')
Run Code Online (Sandbox Code Playgroud)