Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2223984
  • 博文数量: 287
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2130
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-31 14:30
个人简介

自己慢慢积累。

文章分类

全部博文(287)

分类: Python/Ruby

2020-08-14 11:50:50

先说可能遇到的错误,再说总体的代码

1. 可能遇到的报错,附上解决方案:
    1.1 前端请求后端服务器出现Forbidden (CSRF token missing or incorrect.)

  1. 1.在views.py中导入csrf库
  2. from django.views.decorators.csrf import csrf_exempt

  3. 2.在请求的那个函数前面加上装饰器,作用是跳过csrf中间件的保护
  4. @csrf_exempt
  5. def get_input(request):
  6.     query = request.POST.get("value")
  7.     choose = request.POST.get("choose")
  1.2 403之Forbidden (CSRF token missing or incorrect.)

  1. data:{
  2.     //必须加这一句,否正会报403
  3.     csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val(),
  4.     change_name: project_name,
  5.     change_id: project_id
  6. },
1.3 Django报错:ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。
    ajax请求的配置加上
    async : false,

2.整体代码
2.1 html代码

  1. <script type="text/javascript">
  2.     function change_project(obj){
  3.         var project_name = $(obj).find("span").html() ;
  4.         var project_id=obj.title;

  5.         $.ajax({
  6.             //大写POST
  7.             type: 'POST',
  8.             url: '/edit_session/',
  9.             dataType:'text',
  10.             async : false,
  11.             //后面这几个注释的,我没用过,只当万一有用,在调试。
  12.             //告诉jQuery不要去处理发送的数据, 发送对象
  13.             //processData : false,
  14.             //告诉jQuery不要去设置Content-Type请求头#}
  15.             //contentType : false,
  16.             data:{
  17.                 //必须加这一句,否正会报403
  18.                 csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val(),
  19.                 change_name: project_name,
  20.                 change_id: project_id
  21.             },
  22.             success:function () {
  23.                 console.log("修改session成功");
  24.                 console.log("{{ request.session.user_project_default_name }}");
  25.             },
  26.             error:function(){
  27.                 console.log("修改session失败!");
  28.             },

  29.             })
  30.         //刷新页面
  31.         location.reload();
  32.     }
  33.     </script>
view.py

  1. from django.views.decorators.csrf import csrf_exempt

  2. @csrf_exempt
  3. def edit_session(request):
  4.     print("edit_session 开始执行")
  5.     if request.method == 'POST':
  6.         change_name = request.POST.get('change_name')
  7.         change_id = request.POST.get('change_id')
  8.         request.session['user_project_default_name'] = change_name
  9.         request.session['user_project_default_id'] = change_id
  10.     print("edit_session 执行完成")
  11.     return redirect("/index/")


阅读(1210) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~