Django个人博客搭建教程---给你的代码块加添加复制按钮

2024-01-29 15:18

本文主要是介绍Django个人博客搭建教程---给你的代码块加添加复制按钮,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引入js

<script src="https://cdn.jsdelivr.net/clipboard.js/1.5.12/clipboard.min.js"></script>

 在页面文章内容下添加

<p>{{ post.body|safe}}</p>
<script>var clipboard = new Clipboard('.copybtn');clipboard.on('success', function(e) {console.log(e)});clipboard.on('error', function(e) {console.log(e);p
});
</script>

我们的文章内容经过markdown渲染生成了一段html,现在我们要在后端把button按钮添加到这一段html中去

通过控制台可以发现,代码渲染的div是

<div class="codehilite">

首先找到有几个代码块,这里在div中加入id,然后使得id和button中data-clipboard-target="#"的保持一致,因为clipboard.js就是通过id找到要复制的代码块的,也可以通过class来找到代码块,举个例子如下:

<div class="codehilite" id="code">
<button id="ecodecopy" class="copybtn" data-clipboard-action="copy" data-clipboard-target="#code">复制</button>

但是通过re模块替换的时候不能把所有的id都设为一样,这样的话只能找到第一个代码块,所以要保证id的值不一样 

所以后端代码如下:

class JiaPost(View):def get(self, request, article_id, slug):try:thisarticle = get_object_or_404(Articles, id=article_id, status='有效')if thisarticle.url_slug != slug:return render(request, '404.html')thisarticle.increase_views()except:return render(request, '404.html')thisarticle.increase_views()greats = thisarticle.greatscategory_id = thisarticle.category.idcategory = get_object_or_404(Category, id=category_id)thisarticle.body = markdown.markdown(thisarticle.body, extensions=['markdown.extensions.extra','markdown.extensions.codehilite','markdown.extensions.toc',# TocExtension(slugify=slugify)])n = thisarticle.body.count('<div class="codehilite">', 0, len(thisarticle.body))for i in range(n):thisarticle.body = re.sub(r'<div class="codehilite">','&nbsp;&nbsp;<button id="ecodecopy" style="float: right;z-index:10" class="copybtn" ''data-clipboard-action="copy" ''data-clipboard-target="#code{}">复制</button> ''<div class="codehilite" id="code{}">'.format(i, i), thisarticle.body, 1)comment_list = thisarticle.comment_set.all()# thisarticle.body = md.convert(thisarticle.body)tag_name = thisarticle.tags.values('name')tag_name = [item[key] for item in tag_name for key in item]tag = (" ".join(tag_name)).split(" ")context = {"greats": greats,'post': thisarticle,'category': category,'comment_list': comment_list,'tag': tag}return render(request, 'newblog/post.html', context=context)

 

这篇关于Django个人博客搭建教程---给你的代码块加添加复制按钮的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/657323

相关文章

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas