flask-loException: Missing user_loader or request_loader. Refer to http://flask-login.readthedocs.io/#how-it-works for more info

Viewed 11

init.py.........................................................


from flask import Flask
from v1.config import Config
from flask_migrate import Migrate
from v1.routes import main_bp
from v1.dbfile import db,login_manager


def create_app():

    app=Flask(__name__)
    app.config.from_object(Config)
    db.__init__(app)
    login_manager.__init__(app)

    with app.app_context():

        from v1.auth.signin import sign_in
        from v1.auth.signup import sign_up
        app.register_blueprint(sign_up)
        app.register_blueprint(sign_in)
        app.register_blueprint(main_bp)
    
        db.create_all()


    
    return app

...................................dbfile.......................................



from lib2to3.pgen2.token import GREATER
from webbrowser import get
from flask_login import UserMixin,LoginManager
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from flask_migrate import Migrate
from v1.config import Config
from werkzeug.security import check_password_hash,generate_password_hash
from flask_sqlalchemy import SQLAlchemy

db=SQLAlchemy()
login_manager= LoginManager()

engine=create_engine(Config.SQLALCHEMY_DATABASE_URI,echo=True)



@login_manager.user_loader
def load_user(id):
    return User.query.get(int(id))



class User(UserMixin,db.Model):
    __tablename__='users_db'
    _id = db.Column(db.Integer, primary_key=True)
    password = db.Column(db.String,nullable=False)
    email=db.Column(db.String(100), unique=True,nullable=False)



  
class Profile(UserMixin,db.Model):
    __tablename__='profile_db'
    _id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(100),db.ForeignKey("users._id"), nullable=False,unique=True)
    name = db.Column(db.String,nullable=False)
    bio = db.Column(db.String(1000),nullable=False)

  #  def __init__(self, user_id,user_name, email, password):
  #      self.user_id = user_id
  #      self.user_name = user_name
  #      self.email = email
  #      self.password=password


    def set_password(self,password):
      self.password=generate_password_hash(password,method="sha256")

    def check_password(self, password):
      return check_password_hash(self.password,password )
    
    def __repr__(self):
        return '<user {}>'.format(self.user_name)

Session = sessionmaker(bind = engine)
session = Session()

..........................................singup file....................................

from flask import Flask, render_template, redirect,Blueprint,flash,session,url_for,request
from flask_login import login_required, logout_user, current_user, login_user
from v1.form import registrationform
from v1.dbfile import db,User

sign_up=Blueprint ( 'sign_up',
                  __name__,
                  template_folder='template',
                  static_folder='static'
                  )

@sign_up.route('/signup',
                methods=['GET','POST']
                )

def signup():
    if current_user.is_authenticated:
        return redirect(url_for('main_bp.home'))

    form=registrationform()

    if form.validate_on_submit():
        existing_user=User.query.filter_by(email=form.email.data).first()

        if existing_user is None:
            user = User(
                email=form.email.data,
            )

            user.set_password(form.password.data)
            db.session.add(user)
            db.session.commit()  # Create new user
            login_user(user)  # Log in as newly created user
            return redirect(url_for('main_bp.home'))

        flash('A user already exists with that email address.')

    flash('Successfully Registered.')

    return render_template(
        'signup.jinja2',
        title='Create an Account.',
        form=form,
        template='signup',
        body="Sign up for a user account."
        
    )

..........................sinup.jinja2/.....................................


    {% extends "layout.jinja2" %}


{% block content %}
  <div class="form-wrapper">

    <div class="logo">
      
    </div>

    {% for message in get_flashed_messages() %}
      <div class="alert alert-warning">
        <button
          type="button"
          class="close"
          data-dismiss="alert">
          x
        </button>
        {{ message }}
      </div>
    {% endfor %}

    <h1>Sign Up</h1>

    <form method="POST" action="/signup">
      {{ form.csrf_token }}
      <fieldset class="email">
        {{ form.email.label }}
        {{ form.email(placeholder='abhijeet@example.com') }}
        {% if form.email.errors %}
          <ul class="errors">
            {% for error in form.email.errors %}
              <li>{{ error }}</li>{% endfor %}
          </ul>
        {% endif %}
      </fieldset>

      <fieldset class="password">
        {{ form.password.label }}
        {{ form.password }}
        {% if form.password.errors %}
          <ul class="errors">
            {% for error in form.password.errors %}
              <li>{{ error }}</li>{% endfor %}
          </ul>
        {% endif %}
      </fieldset>

      <fieldset class="password2">
        {{ form.password2.label }}
        {{ form.password2 }}
        {% if form.password2.errors %}
          <ul class="errors">
            {% for error in form.password2.errors %}
              <li>{{ error }}</li>{% endfor %}
          </ul>
        {% endif %}
      </fieldset>

      

      <div class="submit-button">
        {{ form.submit }}
      </div>

    </form>

    <div class="login-signup">
      <div>
        <span>Already have an account?</span>
        <a href="{{ url_for('sign_in.login') }}">Log in.</a>
      </div>
    </div>
  </div>

{% endblock %}

    ```



0 Answers
Related