Django使用editor实现基本使用,包括本地上传图片问题
2022/6/4 23:20:29
本文主要是介绍Django使用editor实现基本使用,包括本地上传图片问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Django使用editor实现基本使用,包括本地上传图片问题
可以直接在这里下载editor
https://files.cnblogs.com/files/blogs/737880/test.zip?t=1654347284
配置
参考博客
# 需要导入的文件: <link rel="stylesheet" href="/static/editormd/css/editormd.css"/> <script src="/static/editormd/editormd.min.js"></script> <script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script> '''jqery自己导入过就不需要再导入了'''
html
<form action="/add_article/" method="post"> {% csrf_token %} <p><span>标题</span></p> <input type="text" name="title" class="form-control"> <p class="article-color">内容</p> <div id="my-editormd"> <textarea class="editormd-markdown-textarea" name="doc" style="display:none;"></textarea> <!-- 第二个隐藏文本域,用来构造生成的HTML代码,方便表单POST提交,这里的name可以任意取,后台接受时以这个name键为准 --> <textarea class="editormd-html-textarea" name="html"></textarea> </div> </form> </div>
js
<script src="/static/editormd/editormd.min.js"></script> <script type="text/javascript"> let testEditor; $(function () { testEditor = editormd("my-editormd", { width: "100%", height: 640, syncScrolling: "single", path: "/static/editormd/lib/", //这个配置在simple.html中并没有,但是为了能够提交表单,使用这个配置可以让构造出来的HTML代码直接在第二个隐藏的textarea域中,方便post提交表单。 saveHTMLToTextarea : true, imageUpload: true, imageFormats: ["jpg", "jpeg", "gif", "png", "bmp", "webp"], imageUploadURL: "{% url 'file_upload_view' %}", 'success':1|0 , 'message': '成功以后的信息', 'url':'media/article', onl oad: function () { console.log('onload', this); }, }); }); </script>
views.py
back_dict = { 'success': 1, 'message': '成功' } if request.method == 'POST': # 获取文件对象 article_file_obj = request.FILES.get('editormd-image-file') # 文章上传的图片算用户上传的静态资源,可以考虑存放到media内部 article_package_path = os.path.join(settings.BASE_DIR, 'media', 'article') # 判断路径是否存在,不存在自动创建 if not os.path.exists(article_package_path): os.mkdir(article_package_path) # 拼接完整路径并存储 article_file_path = os.path.join(article_package_path, article_file_obj.name) with open(article_file_path, 'wb') as f: for line in article_file_obj: f.write(line) # 拼接返回给前端的字典 # back_dict['url'] = article_file_path # 不行,这是个绝对路径 back_dict['url'] = '/media/article/%s' % article_file_obj.name print(back_dict) return JsonResponse(back_dict)
主要展示了实现上传图片的功能,其他功能按自己需求来写
接下来解决上传图片是时csrf_token的报错问题
往提交图片的表单中添加csrf_token的input隐藏字段 具体实现: 修改插件包下的plugins/image-dialog/image-dialog.js文件
在var dialogContent=(****)前面添加下面代码
function getCookie(name) { let r = document.cookie.match("\\b" + name + "=([^;]*)\\b"); return r ? r[1] : undefined; } let csrf_token_value = getCookie("csrftoken"); let csrfField = "<input class=\"hidden\" type=\"hidden\" name=\"csrfmiddlewaretoken\" value=\"" + csrf_token_value + "\"/>"; // console.log(csrfField);
在上图画红圈的地方,加上红圈内的代码
这篇关于Django使用editor实现基本使用,包括本地上传图片问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享
- 2024-12-10搭建个人博客网站之一、使用hugo创建个人博客网站