前后端分离怎么获取后台接口数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前后端分离怎么获取后台接口数据相关的知识,希望对你有一定的参考价值。

参考技术A 前端和后台分离,不是完全分离, 数据通道还有有的.
不管是java 或者.net 都有后台向前端传送数据的方式本回答被提问者采纳

django 前后端分离,后端接口实现

博客篇我们使用的是前后端不分离的方式进行实现,前后端不分离实现方式,主要用于小型的项目,且一个人就可以搞定所有,但是中大型的应用还是用的前后端分离的方式进行的

前后端分离方式后台主要给前端提供接口,前端JS调用后台的接口,根据接口定义的传参进行传参,得到返回值,然后展现在页面上,或者对数据进行了操作,把操作后的数据传给后端,后端进行数据的更新等

 

下面的例子我们主要从基本的增删改查进行设计后台接口部分

 

一、准备工作

1、modles.py文件中,创建student表,用于进行增删改查

class  Student(models.Model):
    name = models.CharField(verbose_name=名称,max_length=10)
    phone = models.CharField(max_length=11,unique=True,verbose_name=手机号)
    money = models.FloatField(verbose_name=金额,default=0,null=True)
    addr = models.CharField(verbose_name=地址, default=北京, max_length=20)
    work_addr = models.CharField(verbose_name=地址, default=北京, max_length=20)
    create_time = models.DateTimeField(verbose_name=创建时间, auto_now_add=True)  # auto_now_add的意思,插入数据的时候,自动取当前时间
    update_time = models.DateTimeField(verbose_name=修改时间, auto_now=True)

    class Meta:
        verbose_name = 学生表
        verbose_name_plural = verbose_name
        db_table = student

    def __str__(self):
        return self.name
python manage.py makemigrations   创建表结构

python manage.py migrate 创建数据库表

2、view.py文件中引用form表单进行验证

from .models import Student
from django.forms import ModelForm  #引用表单模块

class StudentForm(ModelForm):
    class Meta:
        model = Student
        fields = __all__ #代表所有的字段

3、定义接口类,主要用于写增删改查接口对应的方法

class StudentView(View):

4、urls.py文件,增加接口请求名称

urlpatterns = [

   #这种方式,需要在连接后面加?,比如url?id=1 
    path(stu3, views2.StudentView.as_view() ), 
   
    #这种方式,无需在连接后面加?,比如 url/3
    #path(‘stu3/<int:id>‘,views2.StudentView.as_view()),
]

二、查询方法

其中支持模糊查询及过滤查询,方法如下:

    search_field=[name,phone,addr,work_addr] #存储搜索的字段,全局变量
    filter_field=[name,phone,id] #存储过滤字段,全局变量

    def get(self,request):
        limit = request.GET.get(limit,20) #每页个数,无传值默认每页20
        page = request.GET.get(page,1) #页码,无传值,默认1
        search=request.GET.get(search) #获取请求中的查询条件
        filter_dict={} #定义空字典,存储过滤字段及值

        #过滤
        for field in self.filter_field:  #遍历过滤list
            value=request.GET.get(field) 
            if value:  #当请求中有该字段且该字段不为空
                filter_dict[field]=value   #把该字段及值写入过滤字典中

        #查询
        q_result=Q() 
        for field in self.search_field: #变量搜索list
            if search:
               d={%s__contains%field:search}
               q_result=Q(**d)|q_result


        all_students = Student.objects.filter(**filter_dict).filter(q_result).values() #优先过滤
#all_students = Student.objects.filter(q_result).values().filter(**filter_dict) #优先模糊查询 page_obj
= Paginator(all_students,limit) stus = list(page_obj.get_page(page)) data = {"error_code":0,"msg":"操作成功","data":stus,"count":page_obj.count} return JsonResponse(data,json_dumps_params={"ensure_ascii":False},encoder=NbJSONEncoder)

 

以上是关于前后端分离怎么获取后台接口数据的主要内容,如果未能解决你的问题,请参考以下文章

前后台分离h5和后台数据接口怎么交互数据的

前后端分离框架 前端怎么调用后端

微信小程序前后端分离怎么实现

[转] 前后端分离开发模式的 mock 平台预研

Web项目开发为何要走前后端分离模式?

前后端分离后台api接口框架探索