I am using Flask to create a /register before call the /login page.
This error show when I submit my register and go to ‘/login’.
This is my ‘app.py’:
JavaScript
x
82
82
1
from projeto import app, db
2
from flask import Blueprint, render_template, redirect, request, url_for, flash, abort
3
from flask_login import login_user, login_required, logout_user
4
from projeto.models import User
5
from projeto.forms import LoginForm, RegistrationForm
6
7
8
@app.route('/')
9
def home():
10
return render_template('home.html')
11
12
13
@app.route('/welcome')
14
@login_required
15
def welcome_user():
16
return render_template('welcome_user.html')
17
18
19
@app.route('/logout')
20
@login_required
21
def logout():
22
logout_user()
23
flash('Logout realizado com sucesso!')
24
return redirect(url_for('home'))
25
26
27
@app.route('/login', methods=['GET', 'POST'])
28
def login():
29
30
form = LoginForm()
31
if form.validate_on_submit():
32
# Grab the user from our User Models table
33
user = User.query.filter_by(email=form.email.data).first()
34
35
# Check that the user was supplied and the password is right
36
# The verify_password method comes from the User object
37
# https://stackoverflow.com/questions/2209755/python-operation-vs-is-not
38
39
if user.check_password(form.password.data) and user is not None:
40
#Log in the user
41
42
login_user(user)
43
flash('Login realizado com sucesso!')
44
45
# If a user was trying to visit a page that requires a login
46
# flask saves that URL as 'next'.
47
next = request.args.get('next')
48
49
# So let's now check if that next exists, otherwise we'll go to
50
# the welcome page.
51
if next == None or not next[0]=='/':
52
next = url_for('welcome_user')
53
54
return redirect(next)
55
return render_template('login.html', form=form)
56
57
58
@app.route('/register', methods=['GET', 'POST'])
59
def register():
60
form = RegistrationForm()
61
62
if request.method == 'POST':
63
user = User(name=form.name.data,
64
address=form.address.data,
65
number=form.number.data,
66
city=form.city.data,
67
state=form.state.data,
68
country_code=form.country_code.data,
69
phone=form.phone.data,
70
email=form.email.data,
71
username=form.username.data,
72
password=form.password.data)
73
74
db.session.add(user)
75
db.session.commit()
76
flash('Obrigado por seu registro! Agora você pode realizar o login.')
77
return redirect(url_for('login'))
78
return render_template('register.html', form=form)
79
80
if __name__ == '__main__':
81
app.run(debug=True)
82
This is my ‘init.py’
JavaScript
1
28
28
1
import os
2
from flask import Flask, Blueprint
3
from flask_sqlalchemy import SQLAlchemy
4
from flask_migrate import Migrate
5
from flask_login import LoginManager
6
7
#CREATE A LOGIN MANAGER OBJECT
8
login_manager = LoginManager()
9
10
#CREATE MY APPLICATION
11
app = Flask(__name__)
12
13
# CREATE MY DATABASE
14
app.config['SECRET_KEY'] = 'secret'
15
basedir = os.path.abspath(os.path.dirname(__file__))
16
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
17
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
18
19
#CONFIGURATE MY DATABASE WITH THE APP STRUCTURE
20
db = SQLAlchemy(app)
21
Migrate(app,db)
22
23
#Pass in our app to the login MANAGER
24
login_manager.init_app(app)
25
26
# Tell users what view to go when they need to login_manager
27
login_manager.login_view = 'login'
28
This is my ‘models.py’
JavaScript
1
40
40
1
from projeto import db, login_manager
2
from werkzeug.security import generate_password_hash, check_password_hash
3
from flask_login import UserMixin
4
5
6
@login_manager.user_loader
7
def load_user(user_id):
8
return User.query.get(user_id)
9
10
class User(db.Model, UserMixin):
11
12
# Create a table in the db
13
__tablename__ = 'usuario'
14
15
id = db.Column(db.Integer, primary_key=True)
16
name = db.Column(db.String(70))
17
address = db.Column(db.String(120))
18
number = db.Column(db.Integer)
19
city = db.Column(db.String(150))
20
state = db.Column(db.String(20))
21
country_code = db.Column(db.Integer)
22
phone = db.Column(db.String(11))
23
email =db.Column(db.String(64), unique=True, index=True)
24
username = db.Column(db.String(64), unique=True, index=True)
25
password_hash = db.Column(db.String(128))
26
27
def __init__(self, name, address, numer, city, state, country_code, phone,
28
email, username, password):
29
30
self.name = name
31
self.address = address
32
self.number = number
33
self.city = city
34
self.state = state
35
self.country_code = country_code
36
self.phone = phone
37
self.email = email
38
self.username = username
39
self.password = password
40
This is the “Traceback”
JavaScript
1
28
28
1
TypeError
2
TypeError: __init__() got an unexpected keyword argument 'number'
3
4
Traceback (most recent call last)
5
File "C:UsersSony_anaconda3envsrodrigovirtualLibsite-packagesflaskapp.py", line 2464, in __call__
6
return self.wsgi_app(environ, start_response)
7
File "C:UsersSony_anaconda3envsrodrigovirtualLibsite-packagesflaskapp.py", line 2450, in wsgi_app
8
response = self.handle_exception(e)
9
File "C:UsersSony_anaconda3envsrodrigovirtualLibsite-packagesflaskapp.py", line 1867, in handle_exception
10
reraise(exc_type, exc_value, tb)
11
File "C:UsersSony_anaconda3envsrodrigovirtualLibsite-packagesflask_compat.py", line 39, in reraise
12
raise value
13
File "C:UsersSony_anaconda3envsrodrigovirtualLibsite-packagesflaskapp.py", line 2447, in wsgi_app
14
response = self.full_dispatch_request()
15
File "C:UsersSony_anaconda3envsrodrigovirtualLibsite-packagesflaskapp.py", line 1952, in full_dispatch_request
16
rv = self.handle_user_exception(e)
17
File "C:UsersSony_anaconda3envsrodrigovirtualLibsite-packagesflaskapp.py", line 1821, in handle_user_exception
18
reraise(exc_type, exc_value, tb)
19
File "C:UsersSony_anaconda3envsrodrigovirtualLibsite-packagesflask_compat.py", line 39, in reraise
20
raise value
21
File "C:UsersSony_anaconda3envsrodrigovirtualLibsite-packagesflaskapp.py", line 1950, in full_dispatch_request
22
rv = self.dispatch_request()
23
File "C:UsersSony_anaconda3envsrodrigovirtualLibsite-packagesflaskapp.py", line 1936, in dispatch_request
24
return self.view_functions[rule.endpoint](**req.view_args)
25
File "C:UsersSonyDesktopProjeto_Flaskapp.py", line 63, in register
26
user = User(name=form.name.data,
27
TypeError: __init__() got an unexpected keyword argument 'number'
28
I just wanna understand my problem to solve it.
I tried to search this problem, finding some cases, but still cannot figure out how to solve it.
Advertisement
Answer
Simple answer.
You have a typo in your model’s init method.
You wrote numer
instead of number
.