解决Django3使用editormd上传图片后前端页面未显示后端传回的URL

导致这种情况的原因可能有:
一、editormd是使用POST方法提交的数据,需要对views.py中处理图片上传的函数使用@csrf_exempt解除CSRF验证(注意看控制台的输出,如果未解除验证会报错)。当然也可以修改editormd的源码在前端添加csrf验证。

二、使用@xframe_options_sameorigin解决iframe拒绝问题(在网上看到的配置editormd的教程里大多没提到这点)。如果是这个原因导致的,在chrome浏览器中的右键–>检查在console中会显示Refused to display 'http://127.0.0.1:8000/ in a frame because it set 'X-Frame-Option‘之类的错误。此时只需要在views.py中对应的处理函数前加上@xframe_options_sameorigin装饰器即可。至于原因已经有前人详细的讲解过了,下面是参考链接:

Django 报错 Refused to display 'http://127.0.0.1:8000/ in a frame because it set 'X-Frame-Option
django3 Refused to display ‘url‘ in a frame because it set ‘X-Frame-Options‘ to ‘deny‘
django解决frame拒绝问题
Django的X-Frame-Options设置
三、注意从request中取值的方式,使用request.FILES[‘editormd-image-file’]或者是request.FILES.get(‘editormd-image-file’,None)。注意返回值的格式,成功就返回{‘success’:1,‘message’:’’,url:’’}失败就返回{‘success’:0,‘message’:’’}

# 下面给出大概的参考代码 from django.views.decorators.clickjacking import xframe_options_sameorigin from django.views.decorators.csrf import csrf_exempt  @csrf_exempt @xframe_options_sameorigin def upload_image(request): 	if requst.method=='POST': 		data = {'success': 0, 'message': '图片上传失败'} 		image = request.FILES.get('editormd-image-file', None) 		if image: 			# 这里做图片存储的工作 			image_url = ''  # 连接到图片位置的url 			data = {'success': 1, 'message': '图片上传成功', 'url': image_url} 		return JsonResponse(data, content_type=text/html) 

https://blog.csdn.net/qq_44614170/article/details/107383283