BBS-添加文章及文章中图片

目录

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

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)

原文地址:https://www.cnblogs.com/mqhpy/p/12050020.html

时间: 2024-10-14 08:41:03

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

ASP.NET/C#获取文章中图片的地址

前几天修改一个网站的布局的时候需要把简单的新闻列表修改为图文结合+新闻列表,不过这新闻的数据库非常简单,图片是在编辑器里面和HTML一起存入数据库中的content字段的,所以工作简化到从一个字符串里面获取图片的地址并输出.在HTML的图片标签一般如下格式所示:<img src="" alt="" title="" width="" height="" />,这就相当于编程中的一个结构体啊,里面

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

array_diff($arr1,$arr2)php数组函数之一,用来计算数组的差集.正则匹配html图片标签用sinaeditor添加的图片删除操作用法之一,今天晚上在用新浪编辑器发表文章的过程中.使用到了此函数 问题描述: 文章中有图片若干.在增加文章的过程中自动上传到网站的图片目录中在修改文章的过程中如果对图片进行相关的删除操作.那么虽然在代码中(已经存入数据库);已经删除了数据的标签.类似于<img src=http://......>这样的标签.但是图片的文件依旧存在于网站上.这时候

【翻译自mos文章】11gR2中的asm后台进程

11gR2中的asm后台进程 参考原文: ASM Background Processes in 11.2 (Doc ID 1641678.1) 适用于: Oracle Database - Enterprise Edition - Version 11.2.0.2 to 11.2.0.4 [Release 11.2] Information in this document applies to any platform. 1 ASMB - ASM Background Process 与as

织梦pc与wap共存 wap文章页面不显示图片解决办法

织梦的cms可以实现pc与wap同步,配置设置用如果我们只用一个域名的话 加入pc端的域名是www.mlhd.org 那么wap端设置的域名可以这样设置www.mlhd.org/m/ 设置好后pc端生成全站就可以了 单当我们生成好后,发现发布的文章中的具体页面中图片不显示首页图标可显示,缩略图也显示,就是文章页面和产品页面图片不显示,那么我们需要进入织梦的wap面板模板修改 找到文章内容页 找代码$newurl=str_replace('src="/uploads/allimg/','src=&

NodeJS写个爬虫,把文章放到kindle中阅读

这两天看了好几篇不错的文章,有的时候想把好的文章 down 下来放到 kindle 上看,便写了个爬虫脚本,因为最近都在搞 node,所以就很自然的选择 node 来爬咯- 本文地址:http://www.cnblogs.com/hustskyking/p/spider-with-node.html,转载请注明源地址. 所谓爬虫,可以简单理解为利用程序操作文件,只是这些文件不在本地,需要我们拉取过来. 一. 爬虫代码解析 1. 拿到目标页码源码 Node 提供了很多接口来获取远程地址代码,就拿

怎么将jpg图片添加到CAD图纸中

怎么将jpg图片添加到CAD图纸中?在日常的操作中,会遇到很多棘手的问题,比如说建筑设计师们在查看CAD图纸的时候,发现有的地方不适合,需要添加一张图片,那怎么将jpg图片添加到CAD图纸中?具体要怎么来进行操作?那下面小编就来教教大家具体的操作步骤,有兴趣的朋友可以一起来看看.以下就是具体操作步骤. 第一步:首先打开电脑,如果电脑桌面中没有CAD编辑器的,可以在电脑桌面中任意的打开一个浏览器,然后在浏览器的搜索框中搜索迅捷CAD编辑器,接下来在下载界面中点击下载安装最新版本的CAD编辑器到电脑

C#中图片BYTE[]和base64string的相互转换

概述 本篇主要讲解c#中图片BYTE[]和base64string的相互转换 编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节 数组.以3个字节为一组.按顺序排列24 位数据,再把这24位数据分成4组,即每组6位.再在每组的的最高位前 补两个0凑足一个字节.这样就把一个3字节为一组的数据重新编码成了4个字节.当所要编码的数据的字节数不是 3的整倍数,也就是说在分组时最后一组不够3个字节.这时在最后一组填充1到2个0字节.并在最后

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

在顶求网的首页中我使用了BootStrap的轮播(carousel)插件来展示文章中的图片.我在程序中自动抓取文章的第一张图片作为该轮播控件中要显示的图片,由于文章的图片大小不一,而轮播插件的大小基本是固定的,所以展示的时候图片出现了变形.在网上找了很多中方式也没有解决(过程曲折,不再赘述),直到找到了这款Jquery的缩放插件——jqthumb.js.下面来看看如何使用它以及如何利用它来控制轮播控件中图片的大小,而且能够做到不变形,可以显示图片的主要部分(类似于微信朋友圈的图片混排效果——不知

Docker安全--将用户添加到Docker组中进行启动容器与未添加到Docker组中的sudo执行的研究

/*************************************** * Author : Samson * Date : 08/25/2015 * Test platform: * gcc 4.8.2 * GNU bash, 4.3.11(1)-release (x86_64-pc-linux-gnu) * Docker version 1.7.1 * Debian GNU/Linux 7 * *************************************/ 结论: 对