
1. 生成验证码 刷新验证码 img标签src属性后面加?会自动请求url
<img class="validCode_img" src="/get_validCode_img/" alt="" width="200px" height="50px">
$(".validCode_img").click(function () {
$(this)[0].src+="?"
})
2. 生成注册页面
1. form组件创建注册页面
- 前端页面生成input标签name属性的值
- eg: xx = form.CharField() 生成的是 <input type="text"></input> 所以使用插件forms.CharField(widget=widgets.PasswordInput())
- username
- password
- password
- email
- 验证每个字段
- clean_username
- 数据库是否有username
- 如果没有 返回username的值 self.cleaned_data.get("username") 验证哪个字段 返回哪个字段的值
- clean_password
- 判断密码是否不全为数字
- clean
- 判断两次密码是否一致
2. 初始化自定义form类,返回前端
3. 前端注册页面
- 后端生成的form对象渲染 username password email
- 生成头像
- 应该生成一个默认头像 让用户点击上传头像 而此时需要把图片遮到上传文件上面
- 父亲设置相对定位 儿子设置绝对定位
<img src="/static/img/default.png" alt="" id="avatar_img">
<input type="file" class="form-control" id="avatar_file" >
- Ajax提交数据
- 上传二进制文件引入 FormData()
- FormData()对象追加键值对
-$("#avatar_file")[0].files[0]) # jquery转DOM对象,取files对象最近一次上传的文件
- 图像预览
- 创建read对象
- 读取本地的url 把结果赋值给this.result
4. 后端注册
- 接受前端提交的数据
- form验证
- 存文件对象 media知识点
views.py
#从前端获取到文件对象
avatar_img = request.FILES.get("avatar_img")
接收的就是文件对象 接受的文件存入upload_to指定的路径中,需要在setting.py和urls.py配置
avatar = models.FileField(verbose_name='头像', upload_to='avatar', default="/avatar/default.png")
setting.py 如果只在这里设置 不在前端设置 用户接收不到文件
MEDIA_ROOT=os.path.join(BASE_DIR,"app01","media")
MEDIA_URL="/media/"
urls.py
# media 配置
from django.views.static import serve
from blog import settings
url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),