-
Django模板中的过滤器和标签们:http://lishiguang.iteye.com/blog/1332529/
-
Django:ajax https://www.cnblogs.com/seven-007/p/8034043.html; https://blog.csdn.net/alvine008/article/details/50233339?utm_source=blogxgwz0;
Python3:json https://www.jb51.net/article/139498.htm -
CSRF攻击:https://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/;感觉还是IBM大佬厉害啊
-
Ajax POST CSRF防御 别人的博文:https://www.cnblogs.com/seven-007/p/8034043.html
官方文档:https://docs.djangoproject.com/en/2.0/ref/csrf/#ajax 当然按照官方的来啊,来龙去脉说的比较详细! -
简单的一个Ajax POST
Django后端接收到的是b'func_name=*****&age=2333
显然,发送和收到的格式都不是JOSN格式的字符串啊! 前端发送应该是用data: JOSN.stringify({***:xxxx})
,后端用json.loads
将bytes转化为Python Dict类型
Better One
error:特别适用于调试,用来发现ajax为何发送失败,比如xhr.setRequestHeader中多了一个空格 -
简单总结下ajax,就是上图了。今天遇到的问题是,使用ajax发送post请求,代替
<button type="submit">
自动发送post请求,就是为了在前端加一个$.blockUI()
防止表单重复提交,所以采用ajax的方式,估计还有其他前端办法来防止表单重复提交。等失败时直接使用return ResponseRedirect('/login')
,然后success中采用innerHTML=data,有个问题是网页的URL不会变化,导致后续ajax请求中url(不带’http://‘简写是基于当前地址栏url然后再追加)出错【查阅url、django slash补充】,造成localhost/login/login,地址不匹配,所以如果是ajax请求,Django后端采用 return HttpResponse(’/login’, text’ ,None) 直接返回text格式的数据。
RuntimeError: You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1/login/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.
你在后端返回的url中,以’/‘开头就意味着从根路径开始,不以’/'开头,location.href就会追加到当前url后面,导致404,location还有其他很多方法,比如replace. -
官方文档处理ajax post请求的方式:在模板先加 {% csrf_token %}(生成的界面中就带有下图),然后模板即前端中,使用js或者jQuery插件获取csrftoken(不用buttom submit时),检查该方法是否POST等修改数据的方法和是否跨域访问的,ajax设置一个httpHeader:X_CSRFTOKEN:csrftoken, ajax默认的contenType就是
"application/x-www-form-urlencoded"
而对于POST请求,并不是直接把用户名和密码加在URL上的,get请求是那样。http://www.w3school.com.cn/jquery/ajax_ajax.asp 不论是ajax的POST data还是表单POST的<button type='submit'>
后端都可以直接request.POST.get('username')
,
username
,form表单中的name为’username’的那个input的值,ajax中的data中键值为’username’的值
Django2.0-过程1.0-Ajax和CSRF
最新推荐文章于 2023-11-09 08:33:28 发布