Python+Django网站开发系列前后端数据交互总结


一、前端往后端提交数据

1.1 HTML原生表单

html原生就带表单标签,标签提供设置method,可以使用get/post方法提交数据到后端,而如果加上action,则可以将数据指定提交到特定的url(即对应的后端函数)。对应submit按钮,需要将type=“submit”,而不能是普通的type=“button”。

<form method="post" action="/mopasswd/">
......
<button type="submit">submit</button>
</form>

1.2 jquery的.post

jquery的.post请求格式如下:.post是高层的操作,jQuery会自动封装调用底层的$.ajax。

$.post(url,{json格式的数据},function (条件) {
具体业务函数
},‘返回的数据格式’)

一般示例如下:

$.post('/changepassword/',{
    'username':$('#username').val(),
    'password':$('#password').val(),
    },function (res) {
            alert("添加成功!");
            window.location.reload();
    },'json')

1.3 jquery的.ajax

ajax是jquery另外一种向后台推送数据的方法,格式如下: . a j a x 是 一 种 通 用 的 底 层 封 装 , .ajax是一种通用的底层封装, .ajax.ajax()请求数据之后,则需要使用回调函数,有beforeSend、error、dataFilter、success、complete等。

$.ajax(
{
    url:url,
    type:"post",
    data:{
    },
    beforeSend:function(){},
    async:true,
    success:function(){

    },
    error:function(){
    },
}

一般示例如下:

$.ajax(
{
    url:'/changepassword/',
    type:"post",
    data:{
        'username':$('#username').val(),
        'password':$('#password').val(),
    },
    beforeSend:function(){},
    async:true,
    success:function(res){
        alert("添加成功!");
        window.location.reload();
    },
    error:function(){
    },
}

1.4 3种方法的区别

原生的有一个缺点,就是提交数据之后整个页面必定会刷新(刷新并且重新加载),没有办法做到局部刷新页面中的某些数据,而不重新刷新及加载整个页面。

而使用JavaScript/JQuery,使用.post与.ajax,可以做到像如下效果的按下按钮后,将某个

标签的value修改为特定字符串,弹出alert提示窗提示特定内容等效果,但又不刷新整个页面。

而至于.post与.ajax前面已经写得很清楚了,基本上.post是.ajax的一种简化的用法。

二、后端往前端返回数据与前端展示数据

2.1 后端往前端返回数据

后端往前端返回数据有各种render,render_to_response,JsonResponse等,看似不同,其实都是差不多的。

#render只能返回静态页面
render(request,'index.html')
#render返回静态页面和数据
#contex={‘userinfo’:userinfo}
render(request,'index.html',context)
#render_to_response可以返回页面与同时向前端返回数据
#locals()表示会把函数内所有的变量数据都会以json格式返回到前端
render_to_response('index.html',locals()#或者可以按照json格式,指定返回给前端的变量与数值
render_to_response('index.html', {'userinfo':userinfo})

#JsonResponse不返回页面,仅以json格式向前端返回数据
JsonResponse({'result': result})

2.2 前端接收后端数据并展示

2.2.1使用python的mako语法

第一种方式就是使用python的mako语法,就是前面用表格遍历数据库查询结果,并且展示的{% for i in data %}{% endfor %}那种语法。

{% for i in data %}
    {{ i.xxx }}
    ......
{% endfor %}

这种用法好处是简单,易学易用易懂。缺点是只能在页面第一次加载的时候加载数据,页面不刷新/重新加载,无法修改数据。

2.2.2使用javascript/jquery

第二种方式是使用javascript/jquery,控制/修改变量的value。

#在form里面以<h1>标题格式,显示“这是一段文字”
var str = "<h1>这是一段文字</h1>"
$('.form').html(str)

#将id为"button1"的按钮的文字显示设置为“修改”
$('#button1').text('修改')

2.2.3两种方式的区别

前者用起来比较简单,没有太多的语法要求,但是只能在页面第一次加载的时候加载数据。后者可以不刷新页面进行数据的操控,但是语法相对比较复杂。

Python是一种流行的编程语言,有非常丰富的库和框架可供使用。而Django一个基于Python开发框架,用于快速搭建Web应用程序。Vue是一种流行的JavaScript框架,用于构建用户界面。 当我们要搭建一个前后端分离的项目时,可以使用PythonDjango框架和Vue框架来实现。下面是大致的步骤: 1. 对于后端,我们可以使用Django框架来搭建RESTful API。首先,创建一个新的Django项目并设置好相关配置。然后,定义数据模型和数据库表,可以使用Django的ORM(对象关系映射)来简化数据库操作。接下来,创建视图函数来处理不同的API请求,可以通过序列化器将模型数据转换为JSON格式进行传输。最后,设置URL路由映射和权限控制,确保API的安全性和可访问性。 2. 对于前端,我们可以使用Vue框架来构建用户界面。首先,创建一个新的Vue项目并安装所需的依赖项。然后,创建组件来管理不同的页面和功能模块。在组件中,可以使用Vue的数据绑定和计算属性等功能来简化数据处理和状态管理。同时,可以使用Vue Router来管理页面之间的导航和路由,以及使用axios库来发送API请求和接收响应。 3. 在前后端之间进行通信时,前端通过axios发送HTTP请求到后端的API接口,后端处理请求并返回相应的数据。前端可以根据接口的返回结果来更新界面和展示数据。 总的来说,使用PythonDjango框架和Vue框架可以很好地实现前后端分离的项目Django提供了强大的后端支持,可以快速搭建API接口,而Vue框架则提供了便捷的前端开发环境,可以轻松构建用户界面。通过这种搭配,我们可以高效地开发出功能完善、交互流畅的Web应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值