Flask Security在security.register上发出路由错误

时间:2016-04-23 04:38:53

标签: python flask flask-security

尝试使用以下命令链接到我的模板中的Flask-Securities寄存器视图时

<li><a href="{{ url_for('security.register') }}">Register</a></li>

我收到路由错误

werkzeug.routing.BuildError

werkzeug.routing.BuildError: Could not build url for endpoint 'security.register'. Did you mean 'security.login' instead?

从我搜索过的内容来看,将Flask Security配置行“SECURITY_REGISTERABLE”设置为True应该已修复它,但它已设置为True并且我仍然收到此错误...

我在models.py中设置了Flask Security,如下所示:

user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore)

2 个答案:

答案 0 :(得分:1)

重构应用程序后,我刚遇到了完全相同的错误。在我的新app.py中,我错过了以下配置设置:

# More Flask Security settings
app.config['SECURITY_REGISTERABLE'] = True
app.config['SECURITY_REGISTER_URL'] = '/admin/create_account'
app.config['SECURITY_LOGIN_URL'] = '/admin/login'
app.config['SECURITY_POST_LOGIN_VIEW'] = '/admin'
app.config['SECURITY_LOGOUT_URL'] = '/admin/logout'
app.config['SECURITY_POST_LOGOUT_VIEW'] = '/admin'
app.config['SECURITY_RESET_URL'] = '/admin/reset'
app.config['SECURITY_CHANGE_URL'] = '/admin/change'
app.config['SECURITY_USER_IDENTITY_ATTRIBUTES'] = ['email', 'username']

上面的示例在我的“ Flask Admin” / admin中使用url端点

在您的情况下,我不确定:默认情况下,flask安全性应该能够在我认为的Flask Security软件包中找到模板文件夹和路由。 quickstart文档没有提及您需要手动设置的任何路由。

您还需要一个具有以下内容的应用程序配置:

app.secret_key = 'SECRETSTUFF'

为注册页面添加显式路由可能是个好主意。

答案 1 :(得分:-3)

出现上述错误,因为安全蓝图中没有可用的register()路由,或者您在代码中将login路由命名为login()。 Plz重新检查你的代码。根据我对flask-Security的一点知识,我认为寄存器视图默认是启用的。要定义寄存器视图,您只需使用@security.route('/register)修饰路径。我希望这很有用。