forms.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from flask_wtf import FlaskForm
  2. from wtforms import StringField, PasswordField, SubmitField, TextAreaField, BooleanField, SelectField
  3. from wtforms.validators import DataRequired, Email, EqualTo, Length, URL, Optional
  4. from flask_wtf.file import FileField, FileAllowed
  5. from wtforms.widgets import TextArea
  6. from flask_wtf import FlaskForm
  7. from wtforms import StringField, BooleanField, SubmitField
  8. from wtforms.validators import DataRequired, Length
  9. class CategoryForm(FlaskForm):
  10. name = StringField('分类名称', validators=[
  11. DataRequired(message='分类名称不能为空'),
  12. Length(min=2, max=100, message='分类名称长度必须在2-100个字符之间')
  13. ])
  14. is_public = BooleanField('设为公共分类')
  15. submit = SubmitField('保存')
  16. class LoginForm(FlaskForm):
  17. username = StringField('用户名', validators=[DataRequired()])
  18. password = PasswordField('密码', validators=[DataRequired()])
  19. submit = SubmitField('登录')
  20. class RegisterForm(FlaskForm):
  21. username = StringField('用户名', validators=[DataRequired(), Length(min=3, max=80)])
  22. email = StringField('邮箱', validators=[DataRequired(), Email(), Length(max=120)])
  23. password = PasswordField('密码', validators=[DataRequired(), Length(min=6)])
  24. password2 = PasswordField('确认密码', validators=[DataRequired(), EqualTo('password')])
  25. submit = SubmitField('注册')
  26. # 在 SiteForm 类中添加以下字段
  27. class SiteForm(FlaskForm):
  28. name = StringField('站点名称', validators=[DataRequired(), Length(max=200)])
  29. url = StringField('网址', validators=[DataRequired(), URL(), Length(max=500)])
  30. description = TextAreaField('描述', validators=[Optional(), Length(max=500)])
  31. category_id = SelectField('分类', coerce=int, validators=[DataRequired()])
  32. custom_icon = FileField('自定义图标 (可选)', validators=[
  33. FileAllowed(['jpg', 'jpeg', 'png', 'gif', 'webp'], '只允许上传图片文件!')
  34. ])
  35. is_public = BooleanField('公开站点')
  36. submit = SubmitField('保存')
  37. class CategoryForm(FlaskForm):
  38. name = StringField('分类名称', validators=[DataRequired(), Length(max=100)])
  39. is_public = BooleanField('公开分类')
  40. submit = SubmitField('保存')
  41. class ImportBookmarksForm(FlaskForm):
  42. bookmark_file = FileField('选择书签文件(HTML)', validators=[DataRequired()])
  43. import_as_public = BooleanField('导入为公共书签(仅管理员)')
  44. submit = SubmitField('导入书签')
  45. class SearchForm(FlaskForm):
  46. q = StringField('搜索站点', validators=[Optional(), Length(max=100)])
  47. class UserForm(FlaskForm):
  48. username = StringField('用户名', validators=[DataRequired()])
  49. email = StringField('邮箱', validators=[DataRequired(), Email()])
  50. password = PasswordField('密码', validators=[Optional()]) # 编辑时可选
  51. password_confirm = PasswordField('确认密码', validators=[
  52. Optional(),
  53. EqualTo('password', message='两次输入的密码必须一致')
  54. ])
  55. is_admin = BooleanField('管理员')
  56. submit = SubmitField('提交')