zoukankan      html  css  js  c++  java
  • BBS总结

    BBS总结:

    九个功能:

    登录:

    验证码的形成,首先形成一个image对象,可调节宽高,rgb参数调节颜色,再生成一个imagefont对象调节字体,

    然后利用imagedraw画板在画板上写字,形成五个随机的字母或数字,并且将验证码存到session中,再利用bytesIO对象

    将图片保存至内存,最后取出通过模板渲染到前台页面

    登录认证可通过auth.authenticate进行验证,通过后auth.login一下,验证码可通过request.session进行获取验证,response是个大字典,包括

    状态码和msg,通过jsonresponse可渲染到模板,ajax回调后判断状态码,如果是100就定向跳转到主页面,否则渲染错误

    信息到登录页面

     

    注册:

    利用form组件进行后台数据校验的,可规定字符串长短,是否为空,wedget改变input框样式,局部钩子可校验单个字段,命名clean_username,返回正确字段,全局钩子可校验多个

    字段,返回的是clean_data,后台形成一个form对象,点is_valid方法即可判断校验是否通过,如果通过把re_pwd数据删除,并且判断图片文件是否上传,若传了,把它也放到

    clean_data字典中,**打散后用create_user添加记录注册,如果验证不通过,错误信息都在errors中,通过response字典返回模板渲染,模板中用change事件取到图片对象,把它读

    入一个文件阅读器,再用onload加载后即可渲染到前台页面,ajax也是通过formdata格式编码提交文件,所以可形成一个formdata对象,把字段名,字段值append到其中即可,注意

    csrf_token也要包括在内,错误信息渲染注意的是单个字段和全局错误信息(all),注册成功跳转到登录页面.

     

     

    主页:

    借助bootstrap搭建页面,导航条渲染时可借助is_authenticated判断用户是否登录,如果登录展示个人中心,可点击注销退出,未登录跳转登录页面,主页面用栅格系统布局,两侧是

    广告,中间是文章名,摘要,作者姓名,头像等

     

    个人站点

    通过(头像及作者姓名)跳转到个人站点, 通过有名分组将路由作者姓名传到后台,可通过视图函数进行校验,首先校验作者是否存在,不存在渲染到error.html页面(参照博客园

    404页面), 个人站点后台需要提交到前台渲染的数据有: 文章列表,不同分类,标签,随笔档案的文章数,当用户点击分类,标签,随笔档案时,其他页面内容不动,把点击那一栏的文

    章删选出来即可,过滤路由是 用户名/tag/tag_id的格式

     

    文章详情

    点击个人站点文章title即可关联到文章详情路由找到其视图函数, 通过有名分组拿到用户名和文章id,找到该文章对象渲染到前端页面,这里用到了母版的继承,文章详情展示了

    以下内容: 文章title, 文章content (传html文件,用safe转义),点赞点踩,评论列表,评论内容

     

    点赞点踩

    通过点击事件以jq对象点hasclass的方法判断点赞与否,利用ajax将数据提交到后台,通过过滤文章和用户生成点赞点踩对象,判断是否存在,不存在则开启事务,将点赞点踩表创

    建记录的同时,把文章表的点赞或点踩数也加一,虽然数据库中点赞点踩数已经加一,但只有在页面全局刷新时才会改变,所以在ajax回调之后将其手动加一

     

    根子评论:

    开启事务,在评论表添加记录的同时,也在文章表添加评论数,前端模板渲染的评论列表根评论包括几楼,评论时间,用户及内容,子评论多一个@父评论用户名及内容,对于ajax

    局部刷新时,用es6字符串替换的方式,将替换内容append到评论内容的jq对象即可

     

    后台展示

     

    文章添加

    添加文章视图函数:用bs4来解析html文档,删除script标签内容来防止xss

     

    八张表:用户表,博客表,文章表,分类表,标签表(第三张表),评论表,点赞点踩表

     

     

    在admin后台中使用富文本编辑器

     

    一.建立模型:(安装django-tinymce==2.6.0)

                    from django.db import models
                  from tinymce.models import HTMLField
                  # Create your models here.
                  class GoodTest(models.Model):
                      status_choices = (
                          (0, '下线'),
                          (1, '上线')
                      )
                      status = models.SmallIntegerField(default=1, choices=status_choices, verbose_name='状态')
                      # 富文本类型:带有格式的文本
                      detail = HTMLField(blank=True, verbose_name='商品详情')

    二.在settings.py中完成配置

                    INSTALLED_APPS = [
                      'django.contrib.admin',
                      'django.contrib.auth',
                      'django.contrib.contenttypes',
                      'django.contrib.sessions',
                      'django.contrib.messages',
                      'django.contrib.staticfiles',
                      'app01.apps.App01Config',
                      'tinymce',
                  ]
                   
                   
             
                      TINYMCE_DEFAULT_CONFIG = {
                          'theme': 'advanced',
                          'width': 600,
                          'height': 400,
                      }

    三.路由分发

                
       
                url('tinymce/', include('tinymce.urls')),  # 富文本编辑器

     

    四. admin.py中完成注册

                    from app01.models import GoodTest


                   # Register your models here.
                   admin.site.register(GoodTest)

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    P1119 灾后重建
    P1453 城市环路
    21.10.28模拟 C
    21.10.28模拟 String Coloring AGC26 C
    P1155 [NOIP2008 提高组] 双栈排序
    21.10.27模拟 solve
    21.10.27模拟 P4157 [SCOI2006]整数划分
    P2168 [NOI2015] 荷马史诗
    P3052 [USACO12MAR]Cows in a Skyscraper G
    P2533 [AHOI2012]信号塔 P1742 最小圆覆盖
  • 原文地址:https://www.cnblogs.com/sima-3/p/11525429.html
Copyright © 2011-2022 走看看