• 欢迎光临~

BBS04--文章后台管理、富文本编辑器、修改用户头像、bbs项目总结

开发技术 开发技术 2022-07-30 次浏览

1 后台管理

# 后台管理
  针对文章的 增删改


# 当一个文件夹下文件比较多的时候 你还可以继续创建文件夹分类处理
  templates文件夹
    -backend文件夹
      -add_article.html
      -backend.html
      -edit_article.html
        
    -应用1文件夹
    -应用2文件夹


# 前端使用 模板过滤器时,需要注意 models中 日期的格式 是怎么样的  需要一一对应

  例如:这次傻逼, models中 Article的create_time 是 date类型,而前段过滤器 我却用 "Y-m-d H:i:s" 

若是 datetime类型的话,注意是否能用 "Y-m-d H:i:s",

不行则
  如果value是一个datetime对象,比如datetime.datetime.now(),输出将是字符串'Wed 09 Jan 2008'
  可以将date与time过滤器结合使用,以呈现datetime值的完整表示形式。 例如:
  {{ value|date:"D d M Y" }} {{ value|time:"H:i" }}

1.1 添加文章

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

    
# 如何解决XSS攻击?
  我们自己解决的话
    针对问题1 后端将字符串内容通过正则表达式筛选 摘要内容
    针对问题2 首先需要确定及获取script标签,再讲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]
        
        
# 总结:
  当你发现一个数据处理起来不是很方便的时候 
  可以考虑百度搜搜有没有现成的模块帮你完成相应的功能

1.2 kindeditor富文本编辑器

编辑器的种类有很多,你可以自己去网上搜索


# 简述步骤:
1.下载页面: http://www.kindsoft.net/down.php
        
2.修改HTML页面
  -2.1 在需要显示编辑器的位置添加textarea输入框
    <textarea id="editor_id" name="content" style="width:700px;height:300px;">
       &lt;strong&gt;HTML内容&lt;/strong&gt;
    </textarea>
    
  -2.2 在该HTML页面添加以下脚本
    <script charset="utf-8" src="/editor/kindeditor.js"></script>
    <script charset="utf-8" src="/editor/lang/zh-CN.js"></script>
    <script>
        KindEditor.ready(function(K) {
            window.editor = K.create('#editor_id',{
                width:'100%',
                height:'500px',
                resizeType:1,
                uploadJson : '/upload_file/', // 上传图片的后端提交路径
                extraFileUploadParams : {
                    'csrfmiddlewaretoken':'{{ csrf_token }}',
                }
            });
    </script>

    # 注意:K.create的参数
      1.第一个参数,可用其它CSS选择器获取元素,匹配多个textarea时只在第一个元素上加载编辑器
      2.第二个参数,可以对编辑器进行配置,具体参数请参考 编辑器初始化参数 

1.3 编辑器上传图片

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

# 查看编辑器 官方文档
  K.create中,配置项 添加 '文件上传的配置路径' 参数
    
    uploadJson : '/upload_file/', // 上传图片的后端提交路径

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

2 修改用户头像

@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())

3 bbs项目总结

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