BBS项目中的添加文章

1.添加文章的时候,我们需要特别注意的是这个地方需要利用到到BeautifulSoup这个模块,因为我们在input的框中输入的内容,到了后端我们需要通过BeautifulSoup模块进行转成后端可以使用的文档

from bs4 import BeautifulSoup
# 添加文章
def add_article(request):
tag_list = models.Tag.objects.filter(blog=request.user.blog)
categroy_list = models.Categroy.objects.filter(blog=request.user.blog)
if request.method == 'POST':
title = request.POST.get('title')
content = request.POST.get('content')
tags_list_id = request.POST.getlist('tags_list')
categroy_id = request.POST.get('tategroy')
print('获取分类id', categroy_id) # 先生成一个模块对象,将文章放进去,获得一个转义后的文章对象
soup = BeautifulSoup(content, 'html.parser')
# print(soup.text),获取的是纯文本
tags = soup.find_all()
# print(tags)获取文章全部标签
for tag in tags:
if tag.name == 'script': # 找到标签名叫script的标签
tag.decompose() # 删除标签 # 截取文章获取文章的150个字符串
desc = soup.text[0:150]
# 操作文章表添加数据到数据库
article_obj = models.Article.objects.create(title=title, content=str(soup), desc=desc, category_id=categroy_id,
blog=request.user.blog) # 操作第三张表
obj_list = []
for tag_id in tags_list_id:
obj_list.append(models.Article2Tag(article=article_obj, tag=tag_id))
models.Article2Tag.objects.bulk_create(obj_list) # 这里我们可以通过bulk_create来进行批量创建 return redirect('/backend/')
return render(request, 'backend/add_article.html', locals())

2.在文章编辑的时候可以使用kindeditor编辑器,我们需要从网上下载下来,保存到我们的本地静态文件中,然后导入就可以使用了

//导入kindeditor编辑器
<script charset="utf-8" src="/static/kindeditor/kindeditor-all-min.js"></script>
//使用kindeditor编辑器
<script>
KindEditor.ready(function (K) {
window.editor = K.create('#id_comment',{
width: '100%',
height:'450px',
resizeType:0,
uploadJson : '/upload_img/',//上传到这个URL
extraFileUploadParams : {
csrfmiddlewaretoken : '{{ csrf_token }}',
}
});
});
</script>

BBS项目中的添加文章中的图片

文章内上传图片这里需要特别注意点,我们使用什么编辑器,从编辑器中找适合我们所需要上传图片的方法。这里我们需要手动拼存放图片/静态文件的文件路径。

# media配置,能够将用户上传的所有文件都统一指定到这个文件夹下
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# 上传静态文件或者图片
import os
from BBS import settings
def upload_img(request):
'''
上传图片这里需要特别注意点,
我们用的什么编辑器,从使用的编辑器中找,
适合我们所需要上传图片的方法
:param request:
:return:
''' back_dic = {'error': 0}
# 获取用户上传的图片,然后保存到本地
if request.method == 'POST':
# 获取文件或图片
file_obj = request.FILES.get('imgFile')
# 手动拼接文件存储的文件路径
file_path = os.path.join(settings.BASE_DIR, 'media', 'article_img')
if not os.path.isdir(file_path): # 判断是否有这个文件夹,
os.mkdir(file_path) # 如果没有就创建一个这样的文件夹
# 文件操作
# 手动拼接文件名全路径,(地址加文件名)
img_path = os.path.join(file_path, file_obj.name)
with open(img_path, 'wb') as f:
for line in file_obj:
f.write(line)
"""
//成功时
{
"error" : 0,
"url" : "http://www.example.com/path/to/file.ext"
这个路径是文件或者是图片的全路径
}
//失败时
{
"error" : 1,
"message" : "错误信息"
} """
_url = '/media/article_img/%s' % file_obj.name
back_dic['url'] = _url
return JsonResponse(back_dic)

BBS-添加文章及文章中图片的更多相关文章

  1. php笔记之:文章中图片处理的使用

    array_diff($arr1,$arr2)php数组函数之一,用来计算数组的差集.正则匹配html图片标签用sinaeditor添加的图片删除操作用法之一,今天晚上在用新浪编辑器发表文章的过程中. ...

  2. 实现app上对csdn的文章查看,以及文章中图片的保存 (制作csdn app 完结篇)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24022165 今天给大家带来CSDN的完结篇,即增加文章的查看和文章中图片的保存 ...

  3. 基于.NetCore开发博客项目 StarBlog - (17) 自动下载文章里的外部图片

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...

  4. wordpress添加post_type自定义文章类型

    wordpress很强大,能当博客也能进行二次开发出很完善的内容管理系统满足企业运营需求,比如可以添加products产品模型.汽车模型等,如何实现呢?添加post_type自定义文章类型就可以了 p ...

  5. iOS 把图片从Mac本地添加到iOS Simulator中

    [把图片从Mac本地添加到iOS Simulator中] 1. 把图片从Mac本机拖动到iOS Simulator中: 2. iOS Simulator会自动打开Safari去打开对应的图片,然后你用 ...

  6. 为你的网页图标(Favicon)添加炫丽的动画和图片

    Favico.js 在让你的网页图标显示徽章,图像或视频.你设置可以轻松地在网页图标中使用动画,可以自定义类型的动画,背景颜色和文字颜色.它支持的动画,像幻灯片,渐变,弹出等等. 您可能感兴趣的相关文 ...

  7. 关于Android中图片大小、内存占用与drawable文件夹关系的研究与分析

    原文:关于Android中图片大小.内存占用与drawable文件夹关系的研究与分析 相关: Android drawable微技巧,你所不知道的drawable的那些细节 经常会有朋友问我这个问题: ...

  8. Bootstrap轮播(carousel)插件中图片变形的终极解决方案——使用jqthumb.js

    在顶求网的首页中我使用了BootStrap的轮播(carousel)插件来展示文章中的图片.我在程序中自动抓取文章的第一张图片作为该轮播控件中要显示的图片,由于文章的图片大小不一,而轮播插件的大小基本 ...

  9. Android 中图片压缩分析(上)

    作者: shawnzhao,QQ音乐技术团队一员 一.前言 在 Android 中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种:其一是质量压缩,其二是下采样压缩. 前者是在不改变图片尺寸的情 ...

随机推荐

  1. 安装部署FastDFS

    安装部署FastDFS 此篇博文是在安装好虚拟机和CentOS7的前提和转自以下几篇博客得来: 1.开启CentOS的网络连接:   1.1.网址:http://blog.csdn.net/white ...

  2. Tcpdump移植

    摘要: tcpdump对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.n ...

  3. python-文件常用操作

    文件内建函数和方法: open()——打开文件 read()——输入 readline()——输入一行 seek()——文件内移动 write()——输出 close()——关闭文件 练习:

  4. 【LOJ】#3093. 「BJOI2019」光线

    LOJ#3093. 「BJOI2019」光线 从下到上把两面镜子合成一个 新的镜子是\((\frac{a_{i}a_{i + 1}}{1 - b_{i}b_{i + 1}},b_{i} + \frac ...

  5. 合并两个排序链表——牛客offer

    题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解题思路: 1.一般看到合并这类的题目就会很自然的想到创建一个新的链表,然后将两个链表根据一定 ...

  6. Codeforces 1189E. Count Pairs

    传送门 可以算是纯数学题了吧... 看到这个 $(x+y)(x^2+y^2)$ 就可以想到化简三角函数时经常用到的操作,左右同乘 那么 $(a_i+a_j)(a_i^2+a_j^2) \equiv  ...

  7. 贝叶斯线性回归(Bayesian Linear Regression)

    贝叶斯线性回归(Bayesian Linear Regression) 2016年06月21日 09:50:40 Duanxx 阅读数 54254更多 分类专栏: 监督学习   版权声明:本文为博主原 ...

  8. 9-Perl 条件语句

    1.Perl 条件语句Perl 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块.注意,数字 0, 字符串 '0' . "" , 空 list ( ...

  9. 清除vs2005、vs2008起始页最近打开项目

    有时候vs2005起始最近打开项目过多很想清除掉,但打遍了也没找到清除选项在哪里,今天找到了方法,发上来和大家共享. 方法一手工操作方法:1)删除最近打开的文件运行regedit,打开HKEY_CUR ...

  10. 【原创】大叔经验分享(60)hive和spark读取kudu表

    从impala中创建kudu表之后,如果想从hive或spark sql直接读取,会报错: Caused by: java.lang.ClassNotFoundException: com.cloud ...