vue框架前后端分离项目之区间过滤、搜索及支付宝支付功能等相关内容-130

1 区间过滤

# 方式一:自己写过滤类,配置到视图类的
filter_backends = [自己写的过滤类]
# 方式二:借助django—fileter
# 1 写一个类:
   from . import models
   from django_filters import filters
   class CourseFilterSet(FilterSet):
       # 区间过滤:field_name关联的Model字段;lookup_expr设置规则;gt是大于,gte是大于等于;
       min_price = filters.NumberFilter(field_name='price', lookup_expr='gte')
       max_price = filters.NumberFilter(field_name='price', lookup_expr='lte')
       class Meta:
           model = models.Course
           # 如果过滤条件仅仅就是Model已有的字段,方式一更好
           # 但是方式二可以自定义过滤字段
           fields = ['course_category','min_price', 'max_price']
           
           
   # 2 配置到视图类上
  filter_backends = [DjangoFilterBackend]
  filter_class = CourseFilterSet

 

2 搜索功能

1 搜索的后端接口
-课程标题(要有搜的关键字)
   -课程简介(要有搜的关键字)
   -专业的搜索引擎(ES:专注于大数据量的搜索)
2 这次咱们写的就是去数据库查
from rest_framework.filters import SearchFilter
class CourserSearchView(GenericViewSet,ListModelMixin):
   queryset = Course.objects.filter(is_delete=False, is_show=True).order_by('-orders')
   serializer_class =CourseSerializer
   # 内置搜索
   filter_backends = [SearchFilter]
   search_fields = ['name', 'brief']
   pagination_class = BasicPagination

3 支付宝支付

1 使用在线支付功能
   -支付宝支付(讲它)
   -微信支付
   -银联支付(用的比较少)
   
   
2 使用支付宝支付
-商户号(营业执照)----》沙箱环境(测试)
  -appkey:             测试的key
       -secretkey:
       
       
       
3 对称加密和非对称加密
-对称加密:加密密码和解密密码是一个
   -非对称加密:公钥和私钥
  -公钥加密(即便截获到加密内容和公钥,只要没有私钥,也解不出来)
       -私钥解密

       
4 商家号(营业执照申请),沙箱环境测试
用户名:babdgw8208@sandbox.com
  密码:111111
 用户号:测试账号
  沙箱版的支付宝
       用户名:bfxtlv8393@sandbox.com
       密码:111111
       支付密码:111111
   
   
   
5 生成公钥,私钥
-借助于支付宝提供的工具:https://opendocs.alipay.com/open/291/105971#LDsXr
    -用这个工具生成公钥和私钥
    -把公钥配置在支付宝的网站上----》生成一个支付宝公钥

6 前端点击立即支付,发送请求
-post请求,数据库写入操作
-生成一个订单(订单表插入数据,订单状态为待支付)
   -生成支付链接,返回给前端
   -前端拿到支付链接,跳转到支付页面(支付宝页面)
   -用户扫描付款(输入用户名密码付款)
   -支付宝收到付款成功,get回调咱们的系统
   -支付宝还会发送post回调,咱们系统接收到以后,修改订单状态


   
 
7 流程:
-1 生成私钥和公钥
   -2 把公钥配置在沙箱环境
   -3 复制出支付宝公钥,粘贴在项目中
   -4 复制出私钥粘贴在项目中
   -5 视图类
       class PayView(APIView):
           def post(self,request,*args,**kwargs):
               subject = "充气娃娃"
               # 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string
               order_string = alipay.api_alipay_trade_page_pay(
                   out_trade_no="20161112",
                   total_amount=1000,
                   subject=subject,
                   return_url="https://www.baidu.com",
                   notify_url="https://example.com/notify"  # 可选, 不填则使用默认notify url
              )
               print(order_string)
               pay_url=gateway+ '?' + order_string
               print(pay_url)
               return Response({'pay_url':pay_url})
    -6 前端发送post请求,测试生成的支付链接,完成支付

 

 

posted @ 2021-01-15 21:17  投降输一半!  阅读(380)  评论(0编辑  收藏  举报