bbs项目之登录、注册及首页

  1. 先分析表,对表进行设计,标清具体的对应关系(1对1还是1对多还是多对多) 用到Abstracter,所以需要在,settings里面进行配置
  2. 注册功能
    1. 静态文件配置,路由,视图函数,用forms组件,写MyRegForm.指定前端的字段(返回到前端是Input框,有bootstap样式,就要加上form-control 类)及钩子函数
      • 用户名,密码,确认密码,邮箱,头像
    2. 前端:
      1. 头像的,希望点一个图片,然后就可以上传头像成功(change事件+文件阅读器),读文件异步(IO操作),用到onload,等待加载完毕才会展示,
      2. 数据输入完成,给按钮绑定点击事件,发送ajax请求,既有普通键值,又有文件,考虑使用formdata对象, 用serializerArray,文件对象需要手动添加
    3. 后端:
      1. 正确逻辑:注册函数,产生form对象,定义空字典(ajax请求)判断是否合法,**打散数据,所以键必须和字段名字相同,头像的文件对象判断一下是否存在,然后创建用户,更新数据库。
      2. 错误逻辑:用字典保存错误信息,通过ajax回调函数可以看到标签的名字,手动拼接,拿到错误信息的字符串,用has-error渲染一下。
  3. 登录功能
    1. 路由,视图函数,前端页面
    2. 前端:
      1. 用户名,密码,图片验证码
      2. 图片验证码,点击图片就不一样
      3. 登录按钮绑定点击事件,发送ajax请求(用户名,密码,验证码)
      4. 回调函数,对字典中的信息进行判断,将错误信息渲染出来
    3. 后端
      1. 图片验证码,单独一个视图函数,随机验证码储存到session中,用于其他的视图函数使用
      2. 拿到用户名、密码、验证码,判断验证码,在判断用户名和密码是否正确,成功就保存登录状态,判断一些错误信息,保存到msg中
  4. 首页信息展示
    1. 路由,视图和前端页面
    2. 前端:
      1. 导航条,bootstrap样式,左右加(2-8-2)中间的布局方式,左右加面板,
      2. 登录成功,展示用户名和更多操作,没有登录,展示登录注册,加一个判断,然后把这两部分分别放进去,把登录、注册和注销分别绑定相关的Url
      3. 动态效果的都在js插件中,加入一个模态框,用于设置修改密码界面,内容写在模态框中,写错了还是渲染错误信息,提交按钮绑定点击事件,发ajax请求,注意发送的数据,还有跳转到,set_password页面,csrf
    3. 后端:
      1. home页面,直接返回home页面
      2. logout页面(判断用户是否登录,用到login_required,在settings中加入配置),直接用注销内置函数,
      3. set_password页面,登录认证先,字典,ajaxpost验证,校验两次密码是否一致,老密码,正确就保存更新数据库,字典中加入一个url字段,用于成功之后跳转到登录页面,然后错误信息加到字典中,返回前端
  5. 后台管理:在admin中注册各个模型表,就可以实现增删改查四个页面,添加文章、文章分类、文章标签,然后录入数据,注意要在用户表中关联对应的blog
  6. 首页展示文章列表:
    1. 后端home拿到所有文章列表,加一个分页组件,然后在home函数中写分页逻辑
    2. 前端用媒体对象列表对文章进行信息展示,用到Bootstrap,文章用循环生成,文章标题,头像,简介,发布日期,点赞,评论数
  7. 首页用户头像
    1. 前端直接拿到相应的avatar字段,然后还需要把上传的文件资源放到专门的文件夹下面,同时在设置中配置相关路径,但是还需要把这个文件夹暴露出来,固定写法,在路由中加一个类似有名分组的url,然后再在前端拼出相关的路径,
  8. 个人站点
    1. 先加一个404页面,图片放到本地,防止图片防盗链
    2. 后端:
      1. 登录的话,拿到所有文章
# 表中的__str__方法

'''
用于在admin后台页面中,重写print方法,让打印结果更可视化,比如写一个 __str__ ,在后台中返回名字,不加的话是一个对象:Blog object、Category object等
'''
def __str__(self):
    return self.username




# 用户头像没显示出来

'''
错误原因是没有在admin 中把用户和个人站点表绑定起来。其实在使用跨表查询、子查询等拿到的字段,遇到问题,应该首先去admin后台中看看,是否把用户和个人站点绑定起来了。
'''

猜你喜欢

转载自www.cnblogs.com/michealjy/p/11823225.html