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需要你掌握每一个功能的书写思路 内部逻辑
    之后再去敲代码熟悉 找感觉
    """
    
  • 相关阅读:
    67. Add Binary
    66. Plus One
    64. Minimum Path Sum
    63. Unique Paths II
    How to skip all the wizard pages and go directly to the installation process?
    Inno Setup打包之先卸载再安装
    How to change the header background color of a QTableView
    Openstack object list 一次最多有一万个 object
    Openstack 的 Log 在 /var/log/syslog 里 【Ubuntu】
    Git 分支
  • 原文地址:https://www.cnblogs.com/hz2lxt/p/13138074.html
Copyright © 2011-2022 走看看