一、后台管理之添加文章

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

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

最新文章

  1. SQL统计
  2. 直接启动tomcat时为tomcat指定JDK
  3. linux 相关快捷键
  4. 由外边距合并到BFC
  5. Oracle数据导入导出imp/exp
  6. Java学习-004-传世经典Helloworld
  7. delphi tidhttp 超时的解决方案
  8. Java 下实现锁无关数据结构--转载
  9. Keil C51 vs 标准C
  10. 介绍Python程序员常用的IDE和其它开发工具
  11. Redis 实践2-数据结构
  12. sql server开发工具
  13. canvas-tangram.html
  14. The Little Prince-12/11
  15. ABAP-HTML浏览器
  16. Nginx+Tomcat搭建负载均衡
  17. mysql数据库使用mysqldump工具针对一个数据库备份,使用--databases选项与不使用该参数的区别
  18. Oracle 注意点大全
  19. android中RecycleView分页原生代码封装,无任何第三方代
  20. 【bzoj2091】[Poi2010]The Minima Game dp

热门文章

  1. Istio的运维-诊断工具(istio 系列五)
  2. 实验二 Linux系统简单文件操作命令
  3. 如何解决flutter中gradle慢的问题
  4. 字符串回文判断 js练习
  5. .Net Core微服务入门全纪录(三)——Consul-服务注册与发现(下)
  6. TensorFlow从0到1之浅谈深度学习(10)
  7. 操作-写入excel
  8. cb37a-_c++_STL_算法_复制元素copy_copy_backward
  9. Python中用OpenPyXL处理Excel表格 - 单元格格式设置
  10. redis基础二----操作set数据类型