博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bbs--文章后台
阅读量:4591 次
发布时间:2019-06-09

本文共 3278 字,大约阅读时间需要 10 分钟。

bbs--文章后台

 需求分析

在个人文章后台中

1 有添加文章的接口

  展示文章标题输入框

  文本编辑框

  标签 分类 选择框

  提交

2 编辑文章的接口

  页面与添加文章相同,就是把该文章的内容展示到文本编辑框中

3 删除文章的接口

  点击删除,文章清除

4 页面2 10布局,左侧有添加文章功能

  右侧以列表形式展现每一条文章,且有分页功能 

文章发布

模块及插件引入

  安装

  pip install beautifulsoup4

  简单使用

1. from bs4 import BeautifulSoup# 对一段HTML格式的内容做解析soup = BeautifulSoup('html内容', 'html.parser')2. 找标签:soup.a3. 找标签的样式:soup.a["class"]4. 找特定的标签soup.select("script")5. 删除标签.decompose()6. 取text文本内容soup.text7. 格式化html内容soup.prettify()
View Code

代码思路

页面展示

1 前端页面布局,然后添加文本编辑按照kindeditor插件的说明,进行配置

2 这里说一下图片展示

  前端方面按照kindeditor插件的说明

  后端单独写一个专门对图片的视图函数

  1 接受前端发送的图片文件对象

  2 把文件对象写入我们自己定义的media下的文件夹中

  3 将文件路径,以url形式返回给前端

 

文章发布

1 前端通过form的post请求,发送 文章标题  内容  标签  

2 后端接受上面的数据,保存数据 文章记录 和 文章详情记录 事务链接

  这里要注意的是接受的文章内容为html标签

  我们要通过bs4模块将接受的内容进行编辑

  1 将文本内容,切前150个数据作为文章描述

  2 将得到的文章格式化成字符串,保存在文章详情数据库中

如果想用ajax获取文本内容

 

实际操作

  html 

    
添加新页面
{
% csrf_token %}
View Code

 

views

# 添加新文章def add_article(request):    if request.method == "POST":        # 获取用户填写的文章内容        title = request.POST.get("title")        content = request.POST.get("content")        category_id = request.POST.get("category")        # 清洗用户发布的文章的内容,去掉script标签        soup = BeautifulSoup(content, "html.parser")        script_list = soup.select("script")        for i in script_list:            i.decompose()        # print(soup.text)        # print(soup.prettify())        # 写入数据库        with transaction.atomic():            # 1. 先创建文章记录            article_obj = models.Article.objects.create(                title=title,                desc=soup.text[0:150],                user=request.user,                category_id=category_id            )            # 2. 创建文章详情记录            models.ArticleDetail.objects.create(                content=soup.prettify(),                article=article_obj            )        return redirect("/blog/backend/")    # 把当前博客的文章分类查询出来    category_list = models.Category.objects.filter(blog__userinfo=request.user)    return render(request, "add_article.html", {
"category_list": category_list})# 富文本编辑器的图片上传def upload(request): res = {
"error": 0} print(request.FILES) file_obj = request.FILES.get("imgFile") file_path = os.path.join(settings.MEDIA_ROOT, "article_imgs", file_obj.name) with open(file_path, "wb") as f: for chunk in file_obj.chunks(): f.write(chunk) # url = settings.MEDIA_URL + "article_imgs/" + file_obj.name url = "/media/article_imgs/" + file_obj.name res["url"] = url return JsonResponse(res)
View Code

 

删除文章

代码思路

1 js 点击删除,获取对应这条文章的id,传给后端

2 后端删除数据

修改文章

与文章发布相同

1 点击编辑,通过get请求得到文章的id,

2 后端通过文章id,查询出文章内容,传给后端。

代码思路

转载于:https://www.cnblogs.com/benson321/p/9512027.html

你可能感兴趣的文章
Vue 数组 字典 template v-for 的使用
查看>>
蓝牙模块选择经验谈
查看>>
java中==和equals
查看>>
CCActionPageTurn3D
查看>>
python random
查看>>
esp32-智能语音-cli(调试交互命令)
查看>>
netty与MQ使用心得
查看>>
关于dl dt dd 文字过长换行在移动端显示对齐的探讨总结
查看>>
组合设计模式
查看>>
第十五部分_Struts2.1拦截器深度剖析、异常处理
查看>>
[codevs1286]郁闷的出纳员
查看>>
Python匿名函数详解
查看>>
python面向对象(六)之元类
查看>>
quartz.net插件类库封装(含源码)
查看>>
package.json中 npm依赖包版本前的符号的意义
查看>>
Cygwin下获取Android源代码
查看>>
C 自删除技术---批处理方式
查看>>
maven学习(下)利用Profile构建不同环境的部署包
查看>>
win8自带输入法如何切换全角、半角操作流程
查看>>
TensorFlow windows 安装(base anaconda)
查看>>