flask中不同类型的用户注册

flask中不同类型的用户注册,flask,flask-sqlalchemy,Flask,Flask Sqlalchemy,我是新来的,我只是想用它来创造一个简单的市场。在我的网站上有三种类型的用户[卖家、买家、管理员]。我认为每种类型的用户都应该有自己的注册和登录,因为由于他们的角色不同,应该提供不同类型的信息。另一方面,每个用户在网站中可能有多个角色,因此我认为不可能只为所有用户创建一个表并为他们分配角色。因此,我认为每种类型的用户应该有三个表 由于只有用户加载程序,我如何才能实现我的目标 我不确定它是否正确,我想我可以创建一个包含所有必需列的完整用户,并根据用户用于注册的地址,将适当的信息添加到数据库中。并根据

我是新来的,我只是想用它来创造一个简单的市场。在我的网站上有三种类型的用户[卖家、买家、管理员]。我认为每种类型的用户都应该有自己的注册和登录,因为由于他们的角色不同,应该提供不同类型的信息。另一方面,每个用户在网站中可能有多个角色,因此我认为不可能只为所有用户创建一个表并为他们分配角色。因此,我认为每种类型的用户应该有三个表

由于只有用户加载程序,我如何才能实现我的目标


我不确定它是否正确,我想我可以创建一个包含所有必需列的完整用户,并根据用户用于注册的地址,将适当的信息添加到数据库中。并根据用户登录时使用的地址找到适当的角色并显示适当的视图

您可以为所有类型的用户使用一个模型:

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    usertype = db.Column(db.String(120))
    password_hash = db.Column(db.String(128))
用户加载程序将仅具有ID:

@login.user_loader
def load_user(id):
    return User.query.get(int(id))
请确保在注册过程中询问用户类型:

class RegistrationForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    email = StringField('Email', validators=[DataRequired(), Email()])
    usertype = SelectField('User Type', choices = [('sellers', 'sellers'),('buyers', 'buyers')], validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])
    password2 = PasswordField(
        'Repeat Password', validators=[DataRequired(), EqualTo('password')])
    submit = SubmitField('Register')
登录时不需要提供用户类型:

class LoginForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])
    remember_me = BooleanField('Remember Me')
    submit = SubmitField('Sign In')
在HTMl文件中,您可以相应地进行编码。以base.html中的这段代码为例

    {% if current_user.usertype == 'buyers' %}
      <ul class="nav navbar-nav">
        <li class="dropdown">
          <a class="dropdown-toggle" data-toggle="dropdown" href="#">List
          <span class="caret"></span></a> 
          <ul class="dropdown-menu">
             <li><a href="{{ url_for('buyerslist')}}">List of buyers</a></li>
          </ul>
        </li>
      </ul>
    {% endif %}
{%if current_user.usertype==“买家”%}
{%endif%}