forms.py 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. # -*- coding: utf-8 -*-
  2. from django import forms
  3. from django.conf import settings
  4. from django.contrib.auth import get_user_model
  5. from django.contrib.auth import authenticate
  6. from django.utils.translation import ugettext, ugettext_lazy as _
  7. import re
  8. from django.contrib.auth.forms import UserCreationForm
  9. from apps.AppInfoManage.models import MyUser
  10. def lowercase_email(email):
  11. """
  12. Normalize the address by lowercasing the domain part of the email
  13. address.
  14. """
  15. email = email or ''
  16. try:
  17. email_name, domain_part = email.strip().rsplit('@', 1)
  18. except ValueError:
  19. pass
  20. else:
  21. email = '@'.join([email_name.lower(), domain_part.lower()])
  22. return email
  23. class LoginForm (forms.ModelForm):
  24. username = forms.CharField(
  25. label='用户名', required=True, error_messages={'required': '请填写你的用户名', 'max_length': '最多只能输入15个字符', 'min_length': '至少输入3个字符'}, max_length=15, min_length=3, widget=forms.TextInput(attrs={'placeholder': '3~15位字母/数字/汉字'}))
  26. # email = forms.EmailField( error_messages={'required': '请填写你的email','invalid':'email格式不正确'},
  27. # label='邮箱',required=True,widget=forms.EmailInput(attrs={'placeholder':'填写正确的email以便激活你的账户'}))
  28. password = forms.CharField(error_messages={'required': '请输入密码', 'max_length': '最多只能输入20个字符', 'min_length': '至少输入6个字符'},
  29. label='密码', required=True, max_length=20, widget=forms.PasswordInput(attrs={'placeholder': '长度在6~20个字符以内'}))
  30. class Meta:
  31. model = get_user_model()
  32. fields = ("username", "password") # "email",
  33. '''
  34. def clean_email(self):
  35. UserModel = get_user_model()
  36. email=self.cleaned_data["email"]
  37. lower_email=lowercase_email(email)
  38. try:
  39. UserModel._default_manager.get(email=lower_email)
  40. except UserModel.DoesNotExist:
  41. return lower_email
  42. raise forms.ValidationError("有人已经注册了这个email地址")
  43. def clean_confirm_password(self):
  44. #cleaned_data=super(SignupForm,self).clean()
  45. password = self.cleaned_data.get("password",False)
  46. confirm_password = self.cleaned_data["confirm_password"]
  47. if not( password == confirm_password):
  48. raise forms.ValidationError("确认密码和密码不一致")
  49. return confirm_password
  50. '''
  51. def clean_username(self):
  52. UserModel = get_user_model()
  53. username = self.cleaned_data["username"]
  54. '''
  55. #过滤用户名敏感词的注册用户
  56. n=re.sub('[^\u4e00-\u9fa5a-zA-Z]','',username)
  57. mgc=['admin','']
  58. if n in mgc:
  59. raise forms.ValidationError("这么好的名字当然被人提前预定啦,换一个试试^-^")
  60. try:
  61. UserModel._default_manager.get(username = username)
  62. except UserModel.DoesNotExist:
  63. return username
  64. raise forms.ValidationError("有人已经注册了这个用户名")
  65. '''
  66. # 自己写的用户注册表单:
  67. class UserRegisterForm(forms.ModelForm):
  68. username = forms.CharField(error_messages={'required': '请输入用户名',
  69. 'max_length': '最多只能输入20个字符',
  70. 'min_length': '至少输入6个字符'},
  71. label='用户名',
  72. required=True,
  73. max_length=20,
  74. widget=forms.TextInput(attrs={'placeholder': '3~15位字母/数字/汉字'
  75. }
  76. )
  77. )
  78. email = forms.EmailField(error_messages={'required': '请填写你的email',
  79. 'invalid': 'email格式不正确'
  80. },
  81. label='邮箱',
  82. required=True,
  83. widget=forms.EmailInput(attrs={'placeholder': '填写正确的email以便激活你的账户'
  84. }
  85. )
  86. )
  87. user_phone = forms.CharField(error_messages={'required': '请输入手机号码',
  88. 'max_length': '最多只能输入11个字符',
  89. 'min_length': '至少输入11个字符'},
  90. label='手机号码',
  91. required=True,
  92. max_length=20,
  93. widget=forms.TextInput(attrs={'placeholder': '请输入手机号码'
  94. }
  95. )
  96. )
  97. password = forms.CharField(error_messages={'required': '请输入密码',
  98. 'max_length': '最多只能输入20个字符',
  99. 'min_length': '至少输入6个字符'},
  100. label='密码',
  101. required=True,
  102. max_length=20,
  103. widget=forms.PasswordInput(attrs={'placeholder': '长度在6~20个字符以内'
  104. }
  105. )
  106. )
  107. password2 = forms.CharField(error_messages={'required': '请输入密码',
  108. 'max_length': '最多只能输入20个字符',
  109. 'min_length': '至少输入6个字符'},
  110. label='确认密码',
  111. required=True,
  112. max_length=20,
  113. min_length=6,
  114. widget=forms.PasswordInput(attrs={'placeholder': '长度在6~20个字符以内'
  115. }
  116. )
  117. )
  118. class Meta:
  119. model = get_user_model()
  120. fields = ("username", "email", "password", "password2")
  121. def clean_email(self):
  122. UserModel = get_user_model()
  123. email = self.cleaned_data["email"]
  124. lower_email = lowercase_email(email)
  125. try:
  126. UserModel._default_manager.get(email=lower_email)
  127. except UserModel.DoesNotExist:
  128. return lower_email
  129. raise forms.ValidationError("有人已经注册了这个email地址")
  130. def clean_password2(self):
  131. password = self.cleaned_data.get("password", False)
  132. password2 = self.cleaned_data["password2"]
  133. if not(password == password2):
  134. raise forms.ValidationError("确认密码和密码不一致")
  135. return password2
  136. def clean_username(self):
  137. UserModel = get_user_model()
  138. username = self.cleaned_data["username"]
  139. # 过滤用户名敏感词的注册用户
  140. n = re.sub('[^\u4e00-\u9fa5a-zA-Z]', '', username)
  141. mgc = ['admin', 'yunfei', '管理']
  142. if n in mgc:
  143. raise forms.ValidationError("这么好的名字当然被人提前预定啦,换一个试试^-^")
  144. try:
  145. UserModel._default_manager.get(username=username)
  146. except UserModel.DoesNotExist:
  147. return username
  148. raise forms.ValidationError("有人已经注册了这个用户名")
  149. class ChangePwdForm (forms.ModelForm):
  150. old_pwd = forms.CharField(error_messages={'required': '请输入密码',
  151. 'max_length': '最多只能输入20个字符',
  152. 'min_length': '至少输入6个字符'},
  153. label='密码',
  154. required=True,
  155. max_length=20,
  156. widget=forms.PasswordInput(attrs={'placeholder': '请输入原始密码'
  157. }
  158. )
  159. )
  160. password = forms.CharField(error_messages={'required': '请输入密码',
  161. 'max_length': '最多只能输入20个字符',
  162. 'min_length': '至少输入6个字符'},
  163. label='密码',
  164. required=True,
  165. max_length=20,
  166. widget=forms.PasswordInput(attrs={'placeholder': '长度在6~20个字符以内'
  167. }
  168. )
  169. )
  170. confirm_password = forms.CharField(error_messages={'required': '请输入密码',
  171. 'max_length': '最多只能输入20个字符',
  172. 'min_length': '至少输入6个字符'},
  173. label='确认密码',
  174. required=True,
  175. max_length=20,
  176. min_length=6,
  177. widget=forms.PasswordInput(attrs={'placeholder': '长度在6~20个字符以内'
  178. }
  179. )
  180. )
  181. class Meta:
  182. model = get_user_model()
  183. fields = ("password",)
  184. def clean_confirm_password(self):
  185. password = self.cleaned_data.get("password", False)
  186. confirm_password = self.cleaned_data["confirm_password"]
  187. if not(password == confirm_password):
  188. raise forms.ValidationError("确认密码和密码不一致")
  189. return confirm_password