ORM peewee を使用して、Flask ブログ投稿タイプのアプリのユーザー登録とログイン フォームについて、Flask Security プロトコルに従っています。登録は問題を引き起こしていますが、ログインは魅力のように機能します。関連する質問Flask-Security レジスタ ビューの使用方法は?
アプリ:
from flask import render_template, request, redirect, url_for
from models import *
@app.route('/')
def home():
return render_template('home.html',
posts=Post.select().order_by(Post.date.desc()))
@app.route('/login', methods=['GET', 'POST'])
def login():
return render_template('/security/login_user.html')
@app.route('/register', methods=['GET', 'POST'])
def register():
return render_template('/security/register_user.html')
データベース ハンドラ:
from flask import Flask
from flask_peewee.db import Database
from peewee import *
from flask_security import Security, PeeweeUserDatastore, UserMixin,
RoleMixin, login_required
import datetime
# Create app
app = Flask(__name__)
app.config['SECRET_KEY'] = 'super-secret'
app.config['DATABASE'] = {
'name': 'unnamed.db',
'engine': 'peewee.SqliteDatabase',
}
app.config['SECURITY_REGISTERABLE'] = True
app.config['SECURITY_REGISTER_URL'] = '/register'
app.config['SECURITY_LOGIN_USER_TEMPLATE'] = 'security/login_user.html'
app.config['SECURITY_REGISTER_USER_TEMPLATE'] =
'security/register_user.html'
app.config['SECURITY_RESET_PASSWORD_TEMPLATE'] =
'security/reset_password.html'
app.config['SECURITY_CHANGE_PASSWORD_TEMPLATE'] =
'security/change_password.html'
# Database connection object
db = Database(app)
user_datastore = PeeweeUserDatastore(db, User, Role, UserRoles)
security = Security(app, user_datastore)
ユーザーフォームを登録します(gitから取得した通常のFlask_Securityファイル):
{% 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" %}
ログには、レンダリング中の出力が次のように表示されます。
- 127.0.0.1 - - [2017/04/28 22:07:51] "GET /login HTTP/1.1" 200 -
- 127.0.0.1 - - [2017/04/28 22:07:55] "GET /register/ HTTP/1.1" 404 -
登録用のバックスペースを含む URL は、ログインとは対照的にレンダリングされています。数時間全体をチェックしましたが、役に立ちませんでした。何が起こっているのかヒントはありますか?