bbs终章(总结)

bbs终章(总结)

  • 后台管理

    文章查增 改删

    前端编辑器(kindeditor富文本编辑器)

    处理XSS攻击以及文章摘要的处理

  • 编辑器上传图片

  • 修改用户头像

  • bbs小总结

  • 后期建议(聊一聊)

 

后台管理

"""
当一个文件夹下文件比较多的时候 你还可以继续创建文件夹分类处理 #rmplates前端文件夹可以多分多份
templates文件夹
backend文件夹
应用1文件夹
应用2文件夹
"""

添加文章

有两个需要注意的问题
1.文章的简介
不能直接切去
  应该先想办法获取到当前页面的文本内容之后截取150个文本字符
 
 2.XSS攻击
针对支持用户直接编写html代码的网址
   针对用户直接书写的script标签 我们需要处理
  1.注视标签内部的内容
     2.直接将script删除

如何解决?
我们自己的话
针对1 后端通过正则表达式筛选
   针对2 首先需要确定及获取script标签
 这两步都好烦 有木有人来帮我一下
beautifulsoup模块 bs4模块
  专门用来帮你处理html页面内的
     该模块主要用于爬虫程序
 
 下载千万不要下错了
   pip3 install beautifulsoup4
                # 模块使用
        soup = BeautifulSoup(content,'html.parser')
​
        tags = soup.find_all()
        # 获取所有的标签
        for tag in tags:
            # print(tag.name)  # 获取页面所有的标签
            # 针对script标签 直接删除
            if tag.name == 'script':
                # 删除标签
                tag.decompose()
        # 文章简介
        # 1 先简单暴力的直接切去content 150个字符
        # desc = content[0:150]
        # 2 截取文本150个
        desc = soup.text[0:150]

"""
当你发现一个数据处理起来不是很方便的时候
可以考虑百度搜搜有没有现成的模块帮你完成相应的功能
"""

kindeditor富文本编辑器

编辑器的种类有很多,你可以自己去网上搜索
我们使用 kingeditor (导入min.js 自己看使用手册 和参数的调配 )

编辑器上传图片

别人写好了接口 但是接口不是你自己的
你需要手动去修改


import os
from BBS14 import settings

def upload_image(request):
"""  阅读使用文档
         //成功时
        {
                "error" : 0,
                "url" : "http://www.example.com/path/to/file.ext"
        }
        //失败时
        {
                "error" : 1,
                "message" : "错误信息"
        }
    :param request:
    :return:
    """
    back_dic = {'error': 0, }  # 先提前定义返回给编辑器的数据格式
   # 用户写文章上传的图片 也算静态资源 也应该放到media文件夹下
 
上传文件源码
    if request.method == "POST":
        # 获取用户上传的图片对象
        # print(request.FILES)  # 打印看到了健固定叫imgFile
        file_obj = request.FILES.get('imgFile')
        # 手动拼接存储文件的路径
        file_dir = os.path.join(settings.BASE_DIR,'media','article_img')
        # 优化操作 先判断当前文件夹是否存在 不存在 自动创建
        if not os.path.isdir(file_dir):
            os.mkdir(file_dir)  # 创建一层目录结构  article_img
        # 拼接图片的完整路径
        file_path = os.path.join(file_dir,file_obj.name)
        with open(file_path,'wb') as f:
            for line in file_obj:
                f.write(line)
        back_dic['url'] = '/media/article_img/%s'%file_obj.name
​
    return JsonResponse(back_dic)

# 在使用别人的框架或者模块的时候 出现了问题不要慌 看看文档可能会有对应的处理方法

修改用户头像

@login_required
def set_avatar(request):
    if request.method == 'POST':
        file_obj = request.FILES.get('avatar')
        # models.UserInfo.objects.filter(pk=request.user.pk).update(avatar=file_obj)  # 不会再自动加avatar前缀
        # 1.自己手动加前缀
        # 2.换一种更新方式
        user_obj = request.user
        user_obj.avatar = file_obj
        user_obj.save()
        return redirect('/home/')
    blog = request.user.blog
    username = request.user.username
    return render(request,'set_avatar.html',locals())

 

bbs项目总结

"""
在开发任意的web项目的时候 其实到了后期需要写的代码会越来越少
都是用已经写好的url填写到a标签href属性完成跳转即可
"""
主要功能总结
表设计 开发流程(粗燥流程 还可以细化)
 注册功能
forms组件使用
   头像动态展示
   错误信息提示
 登陆功能
图片验证码
   滑动验证码
 首页展示
media配置
   主动暴露任意资源接口
 个人站点展示
侧边栏展示
   侧边栏筛选
   侧边栏inclusion_tag
 文章详情页
点赞点踩
   评论
 后台管理
"""
针对bbs需要你掌握每一个功能的书写思路 内部逻辑
之后再去敲代码熟悉 找感觉
"""

 

 

 

 

上一篇:引用 字库编码Unicode相关知识


下一篇:Codeforces 748D Santa Claus and a Palindrome