先说可能遇到的错误,再说总体的代码
1. 可能遇到的报错,附上解决方案:
1.1 前端请求后端服务器出现Forbidden (CSRF token missing or incorrect.)
-
1.在views.py中导入csrf库
-
from django.views.decorators.csrf import csrf_exempt
-
-
2.在请求的那个函数前面加上装饰器,作用是跳过csrf中间件的保护
-
@csrf_exempt
-
def get_input(request):
-
query = request.POST.get("value")
-
choose = request.POST.get("choose")
1.2 403之Forbidden (CSRF token missing or incorrect.)
-
data:{
-
//必须加这一句,否正会报403
-
csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val(),
-
change_name: project_name,
-
change_id: project_id
-
},
1.3 Django报错:ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。
ajax请求的配置加上
async : false,
2.整体代码
2.1 html代码
-
<script type="text/javascript">
-
function change_project(obj){
-
var project_name = $(obj).find("span").html() ;
-
var project_id=obj.title;
-
-
$.ajax({
-
//大写POST
-
type: 'POST',
-
url: '/edit_session/',
-
dataType:'text',
-
async : false,
-
//后面这几个注释的,我没用过,只当万一有用,在调试。
-
//告诉jQuery不要去处理发送的数据, 发送对象
-
//processData : false,
-
//告诉jQuery不要去设置Content-Type请求头#}
-
//contentType : false,
-
data:{
-
//必须加这一句,否正会报403
-
csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val(),
-
change_name: project_name,
-
change_id: project_id
-
},
-
success:function () {
-
console.log("修改session成功");
-
console.log("{{ request.session.user_project_default_name }}");
-
},
-
error:function(){
-
console.log("修改session失败!");
-
},
-
-
})
-
//刷新页面
-
location.reload();
-
}
-
</script>
view.py
-
from django.views.decorators.csrf import csrf_exempt
-
-
@csrf_exempt
-
def edit_session(request):
-
print("edit_session 开始执行")
-
if request.method == 'POST':
-
change_name = request.POST.get('change_name')
-
change_id = request.POST.get('change_id')
-
request.session['user_project_default_name'] = change_name
-
request.session['user_project_default_id'] = change_id
-
print("edit_session 执行完成")
-
return redirect("/index/")
阅读(1283) | 评论(0) | 转发(0) |