这部分主要实现前台部分(添加管理员,查看管理员,添加,修改,删除管理员权限,查看,删除电影收藏,查看,删除评论,查看日志,管理员登陆,注销,修改密码,增删改查电影,增删改查预告,增删改查标签,查看,删除用户)
编辑表单(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'] =