项目:基于Flask的微电影管理网页3

这部分主要实现前台部分(添加管理员,查看管理员,添加,修改,删除管理员权限,查看,删除电影收藏,查看,删除评论,查看日志,管理员登陆,注销,修改密码,增删改查电影,增删改查预告,增删改查标签,查看,删除用户)

编辑表单(forms)

# 管理员
class BaseForm(FlaskForm):
    name = StringField(
        label='管理员名称',
        validators=[
            DataRequired('请输入管理员名称!')
        ],
    )

    pwd = PasswordField(
        label='管理员密码',
        validators=[
            DataRequired('请输入管理员密码!')
        ],
    )
    repwd = PasswordField(
        label='管理员确认密码',
        validators=[
            DataRequired('请输入管理员确认密码!'),
            EqualTo('pwd', message='两次密码不一致')
        ],
    )
    
    is_super = SelectField(
        label='是否超级管理员',
        description='默认为普通管理员',
        coerce=int,
        choices=[(0, '普通管理员'), (1, '超级管理员')],

    )
    role_id = SelectField(
        label='所属角色',
        validators=[
            DataRequired('请选择所属角色!')
        ],
        coerce=int,
        # choices=[(role.id, role.name) for role in Role.query.all()],
        description='所属角色',

    )

    def __init__(self, *args, **kwargs):
        super(BaseForm, self).__init__(*args, **kwargs)
        self.role_id.choices = [(v.id, v.name) for v in Role.query.all()]


class AdminForm(BaseForm):
    submit = SubmitField(
        label='添加管理员',
    )


class EditAdminForm(BaseForm):
    submit = SubmitField(
        label='编辑管理员',
    )









# 权限
class BaseForm(FlaskForm):
    name = StringField(
        label='权限名称',
        validators=[
            DataRequired('请输入权限名称!')
        ],
    )
    url = StringField(
        label='访问链接',
        validators=[
            DataRequired('请输入访问链接!')
        ],
    )


class AuthForm(BaseForm):
    submit = SubmitField(
        label='添加权限',
    )


class EditAuthForm(BaseForm):
    submit = SubmitField(
        label='更新权限',
    )




# 修改密码
class BaseForm(FlaskForm):
    username = StringField(
        label="用户名",
        validators=[
            DataRequired()

        ]
    )
    password = PasswordField(
        label="密码",
        validators=[
            DataRequired(),
            # Length(6, 12, message="密码长度必须为6-12")

        ]
    )


class LoginForm(BaseForm):
    submit = SubmitField(
        label="登录"
    )


class PwdForm(FlaskForm):
    old_pwd = PasswordField(
        label="旧密码",
        validators=[
            DataRequired()
        ],
    render_kw = {
        'placeholder' : "请输入旧密码"
    }
    )
    new_pwd = PasswordField(
        label="新密码",
        validators=[
            DataRequired()
        ],
        render_kw={
            'placeholder': "请输入新密码"
        }
    )

    submit = SubmitField(
        label="修改密码"
    )


# 添加 ,编辑电影信息
class BaseForm(FlaskForm):
    name = StringField(
        label="电影名",
        validators=[
            DataRequired()
        ]
    )
    url = FileField(
        label="电影文件",
        validators=[
            FileAllowed(['mp4', 'avi'], message="文件格式不正确. 只能接收mp4和avi格式")
        ]
    )
    info = TextAreaField(
        label="电影简介"
    )
    logo = FileField(
        label="电影封面",
        validators=[
            FileAllowed(['png', 'jpg'], message="文件格式不正确.")
        ]
    )

    star = SelectField(
        label="电影星级",
        coerce=int,
        choices=[(i+1, "%s星" %(i+1)) for i in range(5)]
    )

    tag_id = SelectField(
        label="电影标签",
        coerce=int,
        # choices=[(tag.id, tag.name) for tag in Tag.query.all()]
    )

    area = StringField(
        label="上映地区"
    )
    length = StringField(
        label="电影时长"
    )
    release_time = DateTimeField(
        label="上映时间"
    )

    def __init__(self, *args, **kwargs):
        super(BaseForm, self).__init__(*args, **kwargs)
        # 当每次实例化表单时, 都重新查询标签的内容,
        self.tag_id.choices = [(tag.id, tag.name) for tag in Tag.query.all()]
class MovieForm(BaseForm):
    submit = SubmitField(
        label="添加电影"
    )

class EditMovieForm(BaseForm):
    submit = SubmitField(
        label="编辑电影"
    )




# 添加,编辑预告
class BaseForm(FlaskForm):
    name = StringField(
        label='预告标题',
        validators=[
            DataRequired('请输入预告标题!')
        ],
    )
    logo = FileField(
        label='预告封面',
        validators=[
            DataRequired('请上传预告封面!')
        ],
    )


class PreviewForm(BaseForm):
    submit = SubmitField(
        label='添加预告',
    )


class EditPreviewForm(BaseForm):
    submit = SubmitField(
        label='编辑预告',
    )



# 为角色添加权限
class BaseForm(FlaskForm):
    name = StringField(
        label='角色名称',
        validators=[
            DataRequired('请输入角色名称!')
        ],
    )
    auths = SelectMultipleField(
        label='权限列表',
        description='请选择权限列表!(可多选)',
        coerce=int,
        # choices=[(item.id, item.name) for item in Auth.query.all()]
    )

    def __init__(self, *args, **kwargs):
        super(BaseForm, self).__init__(*args, **kwargs)
        self.auths.choices = [(item.id, item.name) for item in Auth.query.all()]


class RoleForm(BaseForm):
    submit = SubmitField(
        label='添加角色',

    )


class EditRoleForm(BaseForm):
    submit = SubmitField(
        label='编辑角色',
    )




# 添加编辑标签
class BaseForm(FlaskForm):
    name = StringField(
        label="标签名",
        validators=[
            DataRequired()
        ]
    )
class TagForm(BaseForm):
    submit = SubmitField(
        label="添加标签"
    )

class EditTagForm(BaseForm):
    submit = SubmitField(
        label="编辑标签"
    )

视图函数(views)

# 添加管理员
@admin.route("/admin/add/", methods=['GET', 'POST'])
@is_admin_login
def admin_add():
    form = AdminForm()
    from werkzeug.security import generate_password_hash
    if form.validate_on_submit():
        data = form.data
        if Admin.query.filter_by(name=data['name']).count() == 1:
            flash('管理员已存在!', category='err')
            return redirect(url_for('admin.admin_add'))

        if not data['is_super']:
            data['is_super'] = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值