2

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 は、ログインとは対照的にレンダリングされています。数時間全体をチェックしましたが、役に立ちませんでした。何が起こっているのかヒントはありますか?

4

2 に答える 2

1

Flask Docに従って行う必要がある URL リクエストの作成中に末尾のスラッシュを含めるという投稿された解決策に加えて、上記の問題はキャッシュがクリアされていないために発生しました。 関連する質問は、ハード リロードでキャッシュをクリアすることについてより多くの洞察を与えるでしょう。または、開発モードのときにキャッシュを無効にするだけです。

于 2017-04-28T21:04:08.830 に答える