django和vue实现数据交互的方法


Posted in Python onAugust 21, 2019

我使用的是jQuery的ajax与django进行数据交互,遇到的问题是django的csrf

传输数据的方法如下:

$(function() {
  $.ajax({
   url: 'account/register',
   type: 'post',
   dataType:'json',
   data: $('#form1').serialize(),
   success: function (result) {
   console.log(result);
   if (result) {
    alert("result");
   }
   },
   error: function () {
   alert("error");
   },
  })
  })
 })

django对应的代码

def register(request):
 if request.method=="POST":
  if request.POST.get('name'):
   return render(request,'success.html')
  else:
   return HttpResponse("账号不能为空“)

当提交表单的时候,会出现

如果前端可以有django渲染,这个问题很好解决,只需要在要提交的表单中加入{% csrf_token %},但是在这中情况下显然是行不通的,通过在网上的搜索,我找到了这样的解决方案,完整代码如下:

$(function() {
  $('#sub').click(function () {
  $.ajaxSetup({
   beforeSend: function(xhr, settings) {
   function getCookie(name) {
    var cookieValue = null;
    if (document.cookie && document.cookie != '') {
    var cookies = document.cookie.split(';');
    for (var i = 0; i < cookies.length; i++) {
     var cookie = jQuery.trim(cookies[i]);
     // Does this cookie string begin with the name we want?
     if (cookie.substring(0, name.length + 1) == (name + '=')) {
     cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
     break;
     }
    }
    }
    return cookieValue;
   }
   if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
    // Only send the token to relative URLs i.e. locally.
    xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
   }
   }
  });
  $.ajax({
   url: 'account/register',
   type: 'post',
   dataType:'json',
   data: $('#form1').serialize(),
   success: function (result) {
   console.log(result);
   if (result) {
    alert("result");
   }
   },
   error: function () {
   alert("success");
   },
  })
  })
 })

这样就可以成功提交表单了

方法来源 https://stackoverflow.com/questions/5100539/django-csrf-check-failing-with-an-ajax-post-request

以上这篇django和vue实现数据交互的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
理解python正则表达式
Jan 15 Python
详解Python中heapq模块的用法
Jun 28 Python
Python基础之getpass模块详细介绍
Aug 10 Python
python 读取DICOM头文件的实例
May 07 Python
Anaconda下安装mysql-python的包实例
Jun 11 Python
python 读写文件,按行修改文件的方法
Jul 12 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
Oct 14 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
Python饼状图的绘制实例
Jan 15 Python
python 如何区分return和yield
Sep 22 Python
Elasticsearch 聚合查询和排序
Apr 19 Python
python防止随意修改类属性的实现方法
Aug 21 #Python
python进阶之自定义可迭代的类
Aug 20 #Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 #Python
django中使用POST方法获取POST数据
Aug 20 #Python
python实现猜拳小游戏
Apr 05 #Python
django 自定义filter 判断if var in list的例子
Aug 20 #Python
python并发编程多进程 模拟抢票实现过程
Aug 20 #Python
You might like
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
PHP字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
Python编写屏幕截图程序方法
2015/02/18 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
简单实现python画圆功能
2018/01/25 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
销售工作岗位职责
2013/12/24 职场文书
教堂婚礼主持词
2014/03/14 职场文书
经济管理毕业生求职信
2014/03/15 职场文书
卖房协议书
2014/04/11 职场文书
校园安全演讲稿
2014/05/09 职场文书
理财计划书
2014/08/14 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
依法行政工作汇报材料
2014/10/28 职场文书
环卫工作汇报材料
2014/10/28 职场文书
MySQL创建定时任务
2022/01/22 MySQL
PyTorch中permute的使用方法
2022/04/26 Python