概要
django后端传递markdown给前端,因为模板传递变量是直接宏定义的,所以原生js想要在前端渲染的话,因为一些特殊字符的原因,会出现一些问题,询问之后,有人给出了用ajax传递markdown内容给前端的想法,经过实际测试此方法可行,完全可以实现想要的效果.
代码
views.py
@csrf_exempt
def form_con(request):
# 获取前端传过来的id
id=request.body.decode('utf-8')
# 根据id找到相应的文章
blog=Blog.objects.get(id=id)
# 已字典形式返回给前端
data={'con':blog.content}
return JsonResponse(data)
index.js
div=document.querySelector('div')
div.addEventListener('click',function(){
const xhr=new XMLHttpRequest()
// 向后端发送post请求
xhr.open('POST','http://127.0.0.1:8000/server')
// 设置请求头
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
data='{{ id }}'
// 发送字符串
xhr.send(data)
// 接受后端返回值
xhr.onreadystatechange=function(){
if(xhr.readyState===4 && xhr.status>=200 && xhr.status<300)
{
// 返回值转换类型
data=JSON.parse(xhr.response)
div.innerHTML=data.con
}
}
})