Q&A
Flaskのサインアップ機能・ログイン機能について
Flaskでサインアップ、ログイン機能を作成中で、とりあえず、サインアップ機能だけ作成しました。
ユーザー登録用のDBの作成までできており、ブラウザで、127.0.0.1:5000/signupや、indexにアクセスすると、ブラウザに以下のエラーがでてしまいます。
これは、サインアップだけでなく、ログイン、ログアウトの処理も実装しておかなければいけないのでしょうか?
とりあえず、ユーザーの登録が、できるかの学習、確認を行いたくて、本機能のみ作成しました。
Exception: Missing user_loader or request_loader. Refer to http://flask-login.readthedocs.io/#how-it-works for more info.
python
1# app.py 2 3from flask import Flask, render_template, request, redirect 4from flask_sqlalchemy import SQLAlchemy 5from datetime import datetime 6from flask_login import UserMixin, LoginManager, login_user, logout_user, login_required 7import pytz 8from werkzeug.security import generate_password_hash, check_password_hash 9 10app = Flask(__name__) 11 12app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db' 13app.config['SECRET_KEY'] = 'test' 14db = SQLAlchemy(app) 15 16login_manager = LoginManager() 17 18login_manager.init_app(app) 19 20class User(UserMixin, db.Model): 21 id = db.Column(db.Integer, primary_key = True) 22 username = db.Column(db.String(30), nullable=False, unique=True) 23 password = db.Column(db.String(12), nullable=False) 24 25 26@app.route('/') 27def index(): 28 return render_template('index.html') 29 30@app.route('/signup', methods=['GET', 'POST']) 31def signup(): 32 if request.method == 'POST': 33 username = request.form.get('username') 34 password = request.form.get('password') 35 36 user = User(username=username, password=generate_password_hash(password, method='sha256')) 37 db.session.add(user) 38 db.session.commit() 39 return redirect('/login') 40 else: 41 return render_template('/signup.html') 42 43 44if __name__ == '__main__': 45 app.run(debug=True) 46 47
html
1<! -- signup.html --> 2 3{% extends 'base.html' %} 4 5{% block content %} 6 <form action="" method="POST"> 7 <label for="username">ユーザー名</label> 8 <input type="text" name="username"> 9 <label for="password">パスワード</label> 10 <input type="password" name="password"> 11 <input type="submit" value="登録"> 12 </form> 13 14{% endblock %}
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。