bbs终章(总结)

bbs终章(总结)

 

后台管理

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

添加文章  (模块文章地址  https://www.cnblogs.com/Dominic-Ji/p/9637705.html)

有两个需要注意的问题
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需要你掌握每一个功能的书写思路 内部逻辑
之后再去敲代码熟悉 找感觉
"""

 

 

 

 

posted @ 2021-06-07 16:57  欧阳锦涛  阅读(26)  评论(0)    收藏  举报
TOP 底部