django传递markdown给前端的避坑自救指南

概要

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
            }
        }
    })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值