ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day75 bbs项目☞后台管理+修改头像

2020-06-15 21:54:35  阅读:229  来源: 互联网

标签:list request html blog 头像 tag day75 article 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)

标签:list,request,html,blog,头像,tag,day75,article,bbs
来源: https://www.cnblogs.com/hz2lxt/p/13138074.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有