zoukankan      html  css  js  c++  java
  • day75 bbs项目☞后台管理+修改头像

    一、后台管理之添加文章

    添加文章有两个需要注意的问题:

    1. 文章的简介切取,应该想办法获取到当前文章的文本内容后再截取字符
    2. XSS攻击,由于我们支持用户上传html代码,但是如果用户在上传script标签时附带攻击的话就不太好,所以我们要对用户上传的script标签进行处理

    以上两个步骤都可以通过beautifulsoup模块解决,这是一个专门用来处理html页面的模块,主要用于爬虫程序。

    views.py

    from bs4 import BeautifulSoup
    def add_article(request):
        blog = request.user.blog
        category_list = models.Category.objects.filter(blog=blog)
        tag_list = models.Tag.objects.filter(blog = blog)
        if request.method == 'POST':
            title = request.POST.get('title')
            content = request.POST.get('content')
            category = request.POST.get('category')
            tag_list = request.POST.getlist('tag')
            # 把html代码放入生成一个对象
            soup = BeautifulSoup(content,'html.parser')
            # 获取html代码内所有的标签
            tags = soup.find_all()
    
            for tag in tags:
                if tag.name =='script':
                    # 删除名字为script的标签
                    tag.decompose()
    
            # 文章简介应该从content的html代码中先筛选出文字,再截取150个字符
            desc = soup.text[:150]
            article_obj = models.Article.objects.create(
                title=title,content=content,desc=desc,category_id=category,blog = blog,
            )
            article_tag_list = []
            for tag in tag_list:
                obj = models.Article2Tag(article=article_obj,tag_id= tag)
                article_tag_list.append(obj)
            models.Article2Tag.objects.bulk_create(article_tag_list)
            return redirect('/backend/')
    
    
        return render(request,'backend/add_article.html',locals())
    

    kindeditor富文本编辑器

    编辑器的用法直接查看百度文档

    编辑器上传图片之类的看文档即可

    // 导入编辑器js路径后
    <script>
            KindEditor.ready(function(K) {
                        resizeType:1, // 控制标签只能修改高度
                        uploadJson : '/upload_image/',  // 提交文件上传的路径
                        extraFileUploadParams : {
                            'csrfmiddlewaretoken':'{{ csrf_token }}'
                    }
                    });
            });
    </script>
    

    二、修改用户头像

    def set_avatar(request):
        back_dic={}
        if request.method == 'POST':
            # 必须通过这种方法如果是queryset对象使用update方法的话不会自动加avatar前缀
            avatar = request.FILES.get('file')
            request.user.avatar = avatar
            request.user.save()
        return JsonResponse(back_dic)
    

    bbs项目总结

    """
    在开发任意的web项目的时候 其实到了后期需要写的代码会越来越少
    都是用已经写好的url填写到a标签href属性完成跳转即可
    """
    主要功能总结
    	表设计	开发流程(粗燥流程 还可以细化)
      注册功能
      	forms组件使用
        头像动态展示
        错误信息提示
      登陆功能
      	图片验证码
        滑动验证码
      首页展示
      	media配置
        主动暴露任意资源接口
      个人站点展示
      	侧边栏展示
        侧边栏筛选
        侧边栏inclusion_tag
      文章详情页
      	点赞点踩
        评论
      后台管理
    """
    针对bbs需要你掌握每一个功能的书写思路 内部逻辑
    之后再去敲代码熟悉 找感觉
    """
    
  • 相关阅读:
    over-relaxation
    docker run 常用命令解析
    docker部署apache+php
    docker 部署 HFish(集群部署)
    IPv6 地址生命周期
    UAC简介
    SUDO_KILLER可以帮助你识别并利用错误的Sudo规则与配置
    dirb参数解析
    powersploit使用实例
    powersploit简介
  • 原文地址:https://www.cnblogs.com/hz2lxt/p/13138074.html
Copyright © 2011-2022 走看看