Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在同一页面模板内分别验证多个wtf表单。瓶子_Python_Flask_Wtforms - Fatal编程技术网

Python 在同一页面模板内分别验证多个wtf表单。瓶子

Python 在同一页面模板内分别验证多个wtf表单。瓶子,python,flask,wtforms,Python,Flask,Wtforms,我是一个使用Flask和wtforms的初学者。我已经能够使用Flask登录和wtforms开发一个基本的登录系统,使用单独的路由/表单没有问题。我现在尝试创建的是一个注册页面,其中包含多个表单,要在同一个注册html页面中进行验证 我的AccessCodeCheckForm表单未得到验证,我找不到问题所在。我试着提供尽可能多的代码片段,并指出了哪里有问题。希望不是太大。如果我的代码中遗漏了什么,请告诉我,您希望我在这里添加内容,使其更全面 谢谢你的帮助 这是我的密码: 型号.py class

我是一个使用Flask和wtforms的初学者。我已经能够使用Flask登录和wtforms开发一个基本的登录系统,使用单独的路由/表单没有问题。我现在尝试创建的是一个注册页面,其中包含多个表单,要在同一个注册html页面中进行验证

我的AccessCodeCheckForm表单未得到验证,我找不到问题所在。我试着提供尽可能多的代码片段,并指出了哪里有问题。希望不是太大。如果我的代码中遗漏了什么,请告诉我,您希望我在这里添加内容,使其更全面

谢谢你的帮助

这是我的密码: 型号.py

class Users(db.Model, UserMixin):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(64), unique=True, index=True)
    username = db.Column(db.String(64), unique=True, index=True)
    password_hash = db.Column(db.String(128))
    first_nm = db.Column(db.String(64))
    last_nm = db.Column(db.String(64))
    suffix = db.Column(db.String(4))
    profile_img = db.Column(db.String(64), nullable=False, default='default_profile_img.png')
    role_id = db.Column(db.Integer, db.ForeignKey('user_roles.role_id'))
    grade_id = db.Column(db.Integer, db.ForeignKey('grade_levels.grade_id'))
    access_cd = db.Column(db.Integer, db.ForeignKey('access_codes.code_id'))
    school_id = db.Column(db.Integer, db.ForeignKey('schools.school_id'))
    district_id = db.Column(db.Integer, db.ForeignKey('school_districts.district_id'))
    created_dt = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)

    # add relationship between User table and other tables
    users_subjects = db.relationship('Subjects', backref='user', lazy=True)
    users_cases = db.relationship('Cases', backref='user', lazy=True)

    # initialize method
    def __init__(self, email, username, password, role_id, access_cd):
        self.email = email
        self.username = username
        # hash the password passed by the user
        self.password_hash = generate_password_hash(password)
        self.role_id = role_id
        self.access_cd = access_cd
        
    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

class AccessCodes(db.Model):
    __tablename__ = 'access_codes'
    code_id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    access_cd = db.Column(db.String(64), unique=True)
    school_id = db.Column(db.Integer, db.ForeignKey('schools.school_id'))
    district_id = db.Column(db.Integer, db.ForeignKey('school_districts.district_id'))
    created_dtm = db.Column(db.DateTime)

    # add relationship between User table and other tables
    access_cd = db.relationship('Users', backref='access_cd', lazy=True)
class RegistrationForm(FlaskForm):
    email = StringField('Email', validators=[DataRequired(), Email("Please provide a valid email address.")])
    username = StringField('Username', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired(), EqualTo('pass_confirm', message='Oops!, passwords must match'), Regexp('^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,32}$', flags=0, message='Password must follow the patterns below')])
    pass_confirm = PasswordField('Confirm Password', validators=[DataRequired()])
    role_id = HiddenField()
    access_cd = HiddenField()
    submit = SubmitField('Register!')

    def check_email(self,field):
        #User.query.filter_by means -- Query user table where email = field variable data
        # and grab the first record (first())
        if Users.query.filter_by(email = field).first():
            return field

    def check_username(self, field):
        if Users.query.filter_by(username = field).first():
            return field

class AccessCodeCheckForm(FlaskForm):
    access_cd = StringField('Access Code', validators=[DataRequired()])
    submit = SubmitField('Next')

    def check_access_code(self, field):
        if AccessCodes.query.filter_by(access_cd=field).first():
            return field
    # register user
@users.route('/register', methods=['GET','POST'])
def register():
    register_form = RegistrationForm()
    access_cd_form = AccessCodeCheckForm()

    if request.method == 'GET':
        if access_cd_form.submit.data and access_cd_form.validate_on_submit():
            #I am planning to use the check_access_code method here
            #but just trying something simple first to check validation success
            flash('Get triggered')

    elif request.method == 'POST':
        if register_form.submit.data  and register_form.validate_on_submit():
            user = Users(email=register_form.email.data, username=register_form.username.data, password=register_form.password.data,
                         role_id=register_form.role_id.data, access_cd=register_form.access_cd.data)
            flash(f"role id set as {register_form.role_id.data}")
            check_email = register_form.check_email(field=register_form.email.data)
            check_username = register_form.check_username(field=register_form.username.data)
            if check_email is not None:
                flash("email already used!")
            elif check_username is not None:
                flash("username already taken!")
            else:
                db.session.add(user)
                db.session.commit()
                # redirect where the class view of the login is at
                return redirect(url_for('users.login'))

    return render_template('register.html', register_form=register_form, access_cd_form=access_cd_form)
forms.py

class Users(db.Model, UserMixin):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(64), unique=True, index=True)
    username = db.Column(db.String(64), unique=True, index=True)
    password_hash = db.Column(db.String(128))
    first_nm = db.Column(db.String(64))
    last_nm = db.Column(db.String(64))
    suffix = db.Column(db.String(4))
    profile_img = db.Column(db.String(64), nullable=False, default='default_profile_img.png')
    role_id = db.Column(db.Integer, db.ForeignKey('user_roles.role_id'))
    grade_id = db.Column(db.Integer, db.ForeignKey('grade_levels.grade_id'))
    access_cd = db.Column(db.Integer, db.ForeignKey('access_codes.code_id'))
    school_id = db.Column(db.Integer, db.ForeignKey('schools.school_id'))
    district_id = db.Column(db.Integer, db.ForeignKey('school_districts.district_id'))
    created_dt = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)

    # add relationship between User table and other tables
    users_subjects = db.relationship('Subjects', backref='user', lazy=True)
    users_cases = db.relationship('Cases', backref='user', lazy=True)

    # initialize method
    def __init__(self, email, username, password, role_id, access_cd):
        self.email = email
        self.username = username
        # hash the password passed by the user
        self.password_hash = generate_password_hash(password)
        self.role_id = role_id
        self.access_cd = access_cd
        
    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

class AccessCodes(db.Model):
    __tablename__ = 'access_codes'
    code_id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    access_cd = db.Column(db.String(64), unique=True)
    school_id = db.Column(db.Integer, db.ForeignKey('schools.school_id'))
    district_id = db.Column(db.Integer, db.ForeignKey('school_districts.district_id'))
    created_dtm = db.Column(db.DateTime)

    # add relationship between User table and other tables
    access_cd = db.relationship('Users', backref='access_cd', lazy=True)
class RegistrationForm(FlaskForm):
    email = StringField('Email', validators=[DataRequired(), Email("Please provide a valid email address.")])
    username = StringField('Username', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired(), EqualTo('pass_confirm', message='Oops!, passwords must match'), Regexp('^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,32}$', flags=0, message='Password must follow the patterns below')])
    pass_confirm = PasswordField('Confirm Password', validators=[DataRequired()])
    role_id = HiddenField()
    access_cd = HiddenField()
    submit = SubmitField('Register!')

    def check_email(self,field):
        #User.query.filter_by means -- Query user table where email = field variable data
        # and grab the first record (first())
        if Users.query.filter_by(email = field).first():
            return field

    def check_username(self, field):
        if Users.query.filter_by(username = field).first():
            return field

class AccessCodeCheckForm(FlaskForm):
    access_cd = StringField('Access Code', validators=[DataRequired()])
    submit = SubmitField('Next')

    def check_access_code(self, field):
        if AccessCodes.query.filter_by(access_cd=field).first():
            return field
    # register user
@users.route('/register', methods=['GET','POST'])
def register():
    register_form = RegistrationForm()
    access_cd_form = AccessCodeCheckForm()

    if request.method == 'GET':
        if access_cd_form.submit.data and access_cd_form.validate_on_submit():
            #I am planning to use the check_access_code method here
            #but just trying something simple first to check validation success
            flash('Get triggered')

    elif request.method == 'POST':
        if register_form.submit.data  and register_form.validate_on_submit():
            user = Users(email=register_form.email.data, username=register_form.username.data, password=register_form.password.data,
                         role_id=register_form.role_id.data, access_cd=register_form.access_cd.data)
            flash(f"role id set as {register_form.role_id.data}")
            check_email = register_form.check_email(field=register_form.email.data)
            check_username = register_form.check_username(field=register_form.username.data)
            if check_email is not None:
                flash("email already used!")
            elif check_username is not None:
                flash("username already taken!")
            else:
                db.session.add(user)
                db.session.commit()
                # redirect where the class view of the login is at
                return redirect(url_for('users.login'))

    return render_template('register.html', register_form=register_form, access_cd_form=access_cd_form)
视图.py

class Users(db.Model, UserMixin):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(64), unique=True, index=True)
    username = db.Column(db.String(64), unique=True, index=True)
    password_hash = db.Column(db.String(128))
    first_nm = db.Column(db.String(64))
    last_nm = db.Column(db.String(64))
    suffix = db.Column(db.String(4))
    profile_img = db.Column(db.String(64), nullable=False, default='default_profile_img.png')
    role_id = db.Column(db.Integer, db.ForeignKey('user_roles.role_id'))
    grade_id = db.Column(db.Integer, db.ForeignKey('grade_levels.grade_id'))
    access_cd = db.Column(db.Integer, db.ForeignKey('access_codes.code_id'))
    school_id = db.Column(db.Integer, db.ForeignKey('schools.school_id'))
    district_id = db.Column(db.Integer, db.ForeignKey('school_districts.district_id'))
    created_dt = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)

    # add relationship between User table and other tables
    users_subjects = db.relationship('Subjects', backref='user', lazy=True)
    users_cases = db.relationship('Cases', backref='user', lazy=True)

    # initialize method
    def __init__(self, email, username, password, role_id, access_cd):
        self.email = email
        self.username = username
        # hash the password passed by the user
        self.password_hash = generate_password_hash(password)
        self.role_id = role_id
        self.access_cd = access_cd
        
    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

class AccessCodes(db.Model):
    __tablename__ = 'access_codes'
    code_id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    access_cd = db.Column(db.String(64), unique=True)
    school_id = db.Column(db.Integer, db.ForeignKey('schools.school_id'))
    district_id = db.Column(db.Integer, db.ForeignKey('school_districts.district_id'))
    created_dtm = db.Column(db.DateTime)

    # add relationship between User table and other tables
    access_cd = db.relationship('Users', backref='access_cd', lazy=True)
class RegistrationForm(FlaskForm):
    email = StringField('Email', validators=[DataRequired(), Email("Please provide a valid email address.")])
    username = StringField('Username', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired(), EqualTo('pass_confirm', message='Oops!, passwords must match'), Regexp('^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,32}$', flags=0, message='Password must follow the patterns below')])
    pass_confirm = PasswordField('Confirm Password', validators=[DataRequired()])
    role_id = HiddenField()
    access_cd = HiddenField()
    submit = SubmitField('Register!')

    def check_email(self,field):
        #User.query.filter_by means -- Query user table where email = field variable data
        # and grab the first record (first())
        if Users.query.filter_by(email = field).first():
            return field

    def check_username(self, field):
        if Users.query.filter_by(username = field).first():
            return field

class AccessCodeCheckForm(FlaskForm):
    access_cd = StringField('Access Code', validators=[DataRequired()])
    submit = SubmitField('Next')

    def check_access_code(self, field):
        if AccessCodes.query.filter_by(access_cd=field).first():
            return field
    # register user
@users.route('/register', methods=['GET','POST'])
def register():
    register_form = RegistrationForm()
    access_cd_form = AccessCodeCheckForm()

    if request.method == 'GET':
        if access_cd_form.submit.data and access_cd_form.validate_on_submit():
            #I am planning to use the check_access_code method here
            #but just trying something simple first to check validation success
            flash('Get triggered')

    elif request.method == 'POST':
        if register_form.submit.data  and register_form.validate_on_submit():
            user = Users(email=register_form.email.data, username=register_form.username.data, password=register_form.password.data,
                         role_id=register_form.role_id.data, access_cd=register_form.access_cd.data)
            flash(f"role id set as {register_form.role_id.data}")
            check_email = register_form.check_email(field=register_form.email.data)
            check_username = register_form.check_username(field=register_form.username.data)
            if check_email is not None:
                flash("email already used!")
            elif check_username is not None:
                flash("username already taken!")
            else:
                db.session.add(user)
                db.session.commit()
                # redirect where the class view of the login is at
                return redirect(url_for('users.login'))

    return render_template('register.html', register_form=register_form, access_cd_form=access_cd_form)
register.html

{% extends "base.html" %}
{% block content %}

<!-- this secion is handled by a javascript function and is working fine-->
<form id="role-selection">
    <div class="row align-items-center">
        <div class="col">
        </div>
        <div class="col">
            <h1><b>Are you a:</b></h1>
            <button onclick="userType(1)">STUDENT</button>
            <button onclick="userType(2)">TEACHER</button>
            <button onclick="userType(3)">ADMINISTRATOR</button>
        </div>
        <div class="col">
        </div>
    </div>
</form>

<!-- this section is the one I am having issues with because it does not gets validated-->
<form method="GET" id="access-code-selection" onsubmit="accessCode()">
    {{ access_cd_form.hidden_tag() }} <!-- hidden tag is a CSRF security feature-->
    <div class="row align-items-center">
        <div class="col">
        </div>
        <div class="col">
            <h1><b>Do you have an existing class, school or District's access code?</b></h1>
            {{ access_cd_form.access_cd.label }} {{ access_cd_form.access_cd(class_="form-control") }}
            {{ access_cd_form.submit(class_="btn btn-primary") }}
        </div>
        <div class="col">
        </div>
    </div>
</form>

<!-- have not even test the submission of this form yet -->
<form method="POST" id="register-container">
    {{ register_form.hidden_tag() }} <!-- hidden tag is a CSRF security feature-->
    {{ register_form.role_id() }} <!-- hidden tag to specify user role -->
    {{ register_form.access_cd() }}

    <div class="row align-items-center">
        <div class="col">
        </div>
        <div class="col register-form-column">
                <div class="form-group">
                    {{ register_form.username.label }} {{ register_form.username(class_="form-control") }}
                </div>
                <div class="form-group">
                    {{ register_form.email.label }} {{ register_form.email(class_="form-control") }}
                    <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
                </div>

                {% if register_form.email.errors %}
                    {% for error in register_form.email.errors %}
                      <p style="color:red;">{{ error }}</p>
                    {% endfor %}
                {% endif %}

                <div class="form-group">
                    {{ register_form.password.label }} {{ register_form.password(class_="form-control", onfocus="showRequirements()") }}
                </div>

                {% if register_form.password.errors %}
                    {% for error in register_form.password.errors %}
                      <p style="color:red;">{{ error }}</p>
                    {% endfor %}
                {% endif %}

                <ul id="password-requirements" style="display: none;">
                    <li>At least one digit [0-9]</li>
                    <li>At least one lowercase character [a-z]</li>
                    <li>At least one uppercase character [A-Z]</li>
                    <li>At least one special character [*.!@#$%^&(){}[]:;<>,.?/~_+-=|\]</li>
                    <li>At least 8 characters in length, but no more than 32.</li>
                </ul>

                <div class="form-group">
                    {{ register_form.pass_confirm.label }} {{ register_form.pass_confirm(class_="form-control") }}
                </div>

                <div class="form-group form-check">
                    <input type="checkbox" class="form-check-input" id="exampleCheck1">
                    <label class="form-check-label" for="exampleCheck1">Agree to term and services</label>
                    <small class="form-text text-muted">Already have an account? <a href="{{url_for('users.login')}}">Login here!.</a></small>
                </div>
                {{ register_form.submit(class_="btn btn-primary") }}
        </div>
        <div class="col">
        </div>
    </div>
</form>

{% endblock %}
 {% with messages = get_flashed_messages() %}
      {% if messages %}
        {% for message in messages %}

            <div class="alert alert-warning alert-dismissible fade show alert-container" role="alert">
              {{ message }}
              <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                <span aria-hidden="true">&times;</span>
              </button>
            </div>

        {% endfor %}
      {% endif %}
    {% endwith %}
{%extends“base.html”%}
{%block content%}
你是:
学生
老师
管理员
{{access_cd_form.hidden_tag()}
您是否有现有的班级、学校或学区的访问代码?
{{access_cd_form.access_cd.label}{{access_cd_form.access_cd(class=“form control”)}
{{access_cd_form.submit(class=“btn btn primary”)}
{{register\u form.hidden\u tag()}}
{{register\u form.role\u id()}
{{register\u form.access\u cd()}
{{register\u form.username.label}{{register\u form.username(class=“form control”)}
{{register\u form.email.label}{{register\u form.email(class=“form control”)}
我们永远不会与其他人共享您的电子邮件。
{%if register_form.email.errors%}
{%for register_form.email.errors%}

{{error}

{%endfor%} {%endif%} {{register\u form.password.label}{{register\u form.password(class=“form control”,onfocus=“showRequirements()”)} {%if register_form.password.errors%} {%for register_form.password.errors%}

{{error}

{%endfor%} {%endif%}
  • 至少一位数字[0-9]
  • 至少一个小写字符[a-z]
  • 至少一个大写字符[A-Z]
  • 至少有一个特殊字符[*.!@$%^&({}[]:;,.?/~+-=\]
  • 长度至少为8个字符,但不超过32个
{{register\u form.pass\u confirm.label}{{register\u form.pass\u confirm(class=“form control”)} 同意条款和服务 已经有账户了吗? {{register\u form.submit(class=“btn btn primary”)} {%endblock%}
我正在打印错误并直接在标题上闪烁: base.html

{% extends "base.html" %}
{% block content %}

<!-- this secion is handled by a javascript function and is working fine-->
<form id="role-selection">
    <div class="row align-items-center">
        <div class="col">
        </div>
        <div class="col">
            <h1><b>Are you a:</b></h1>
            <button onclick="userType(1)">STUDENT</button>
            <button onclick="userType(2)">TEACHER</button>
            <button onclick="userType(3)">ADMINISTRATOR</button>
        </div>
        <div class="col">
        </div>
    </div>
</form>

<!-- this section is the one I am having issues with because it does not gets validated-->
<form method="GET" id="access-code-selection" onsubmit="accessCode()">
    {{ access_cd_form.hidden_tag() }} <!-- hidden tag is a CSRF security feature-->
    <div class="row align-items-center">
        <div class="col">
        </div>
        <div class="col">
            <h1><b>Do you have an existing class, school or District's access code?</b></h1>
            {{ access_cd_form.access_cd.label }} {{ access_cd_form.access_cd(class_="form-control") }}
            {{ access_cd_form.submit(class_="btn btn-primary") }}
        </div>
        <div class="col">
        </div>
    </div>
</form>

<!-- have not even test the submission of this form yet -->
<form method="POST" id="register-container">
    {{ register_form.hidden_tag() }} <!-- hidden tag is a CSRF security feature-->
    {{ register_form.role_id() }} <!-- hidden tag to specify user role -->
    {{ register_form.access_cd() }}

    <div class="row align-items-center">
        <div class="col">
        </div>
        <div class="col register-form-column">
                <div class="form-group">
                    {{ register_form.username.label }} {{ register_form.username(class_="form-control") }}
                </div>
                <div class="form-group">
                    {{ register_form.email.label }} {{ register_form.email(class_="form-control") }}
                    <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
                </div>

                {% if register_form.email.errors %}
                    {% for error in register_form.email.errors %}
                      <p style="color:red;">{{ error }}</p>
                    {% endfor %}
                {% endif %}

                <div class="form-group">
                    {{ register_form.password.label }} {{ register_form.password(class_="form-control", onfocus="showRequirements()") }}
                </div>

                {% if register_form.password.errors %}
                    {% for error in register_form.password.errors %}
                      <p style="color:red;">{{ error }}</p>
                    {% endfor %}
                {% endif %}

                <ul id="password-requirements" style="display: none;">
                    <li>At least one digit [0-9]</li>
                    <li>At least one lowercase character [a-z]</li>
                    <li>At least one uppercase character [A-Z]</li>
                    <li>At least one special character [*.!@#$%^&(){}[]:;<>,.?/~_+-=|\]</li>
                    <li>At least 8 characters in length, but no more than 32.</li>
                </ul>

                <div class="form-group">
                    {{ register_form.pass_confirm.label }} {{ register_form.pass_confirm(class_="form-control") }}
                </div>

                <div class="form-group form-check">
                    <input type="checkbox" class="form-check-input" id="exampleCheck1">
                    <label class="form-check-label" for="exampleCheck1">Agree to term and services</label>
                    <small class="form-text text-muted">Already have an account? <a href="{{url_for('users.login')}}">Login here!.</a></small>
                </div>
                {{ register_form.submit(class_="btn btn-primary") }}
        </div>
        <div class="col">
        </div>
    </div>
</form>

{% endblock %}
 {% with messages = get_flashed_messages() %}
      {% if messages %}
        {% for message in messages %}

            <div class="alert alert-warning alert-dismissible fade show alert-container" role="alert">
              {{ message }}
              <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                <span aria-hidden="true">&times;</span>
              </button>
            </div>

        {% endfor %}
      {% endif %}
    {% endwith %}
{%with messages=get\u flashed\u messages()%}
{%if消息%}
{消息%中的消息为%s}
{{message}}
&时代;
{%endfor%}
{%endif%}
{%endwith%}

在查看功能中,您可以通过以下方式验证第一个表单:

if request.method == 'GET':
   if access_cd_form.submit.data and access_cd_form.validate_on_submit():
这里的
form.validate\on\u submit()
是['POST',PUT',PATCH',DELETE']和form.validate()中
request.method的快捷方式。由于此表单使用GET方法,
access\u cd\u表单.validate\u on\u submit()
将始终返回False,因此无法验证表单(请参阅中的详细信息)

我建议将此行更改为:

if request.method == 'GET':
   if access_cd_form.submit.data and access_cd_form.validate():
顺便说一句,我想你可以用POST来处理这两种形式:

@users.route('/register', methods=['GET','POST'])
def register():
    register_form = RegistrationForm()
    access_cd_form = AccessCodeCheckForm()

    if request.method == 'POST':  # use one if statement for request method
        if access_cd_form.submit.data and access_cd_form.validate():  # change to validate()
            #I am planning to use the check_access_code method here
            #but just trying something simple first to check validation success
            flash('Get triggered')

        if register_form.submit.data and register_form.validate():  # change to validate()
            user = Users(email=register_form.email.data, username=register_form.username.data, password=register_form.password.data,
                         role_id=register_form.role_id.data, access_cd=register_form.access_cd.data)
            flash(f"role id set as {register_form.role_id.data}")
            check_email = register_form.check_email(field=register_form.email.data)
            check_username = register_form.check_username(field=register_form.username.data)
            if check_email is not None:
                flash("email already used!")
            elif check_username is not None:
                flash("username already taken!")
            else:
                db.session.add(user)
                db.session.commit()
                # redirect where the class view of the login is at
                return redirect(url_for('users.login'))