Web开发 ------ 基于Django+Vue网上购物商城(四): 项目细节完善

Web开发 ------ 基于Django+Vue网上购物商城:项目细节完善

完整项目地址:https://gitee.com/dadadaliuliuliiu/ShopProject

一、支付宝API接口 报错:

1.报错:连接不上[2020/4/2 19:36] Upload to shop failed: could not resolve file “sftp://47.105.62.144/”. (Exhausted available authentication methods)
解决:
顶行tools–>development–>configuration–>里面有两个,一个是应用shop,一个是ip47.105.62.144,进行检测Test_Connection,我的是密码不对
2.报错说函数中没有某个方法,点进函数查看,方法是否更新,更改方法名。
3.[Errno 2] No such file or directory: ‘/data/www/ShopProject/app/trade/keys/private_daliu.txt’
原因:可能是写的代码文件没有上传服务器,这里的文件是我从文件夹中直接建立的目录,所以可能不会自动上传。
解决:在pycharm的目录中找到报错文件,右击文件点development–>upload to shop,在运行
4. File “/data/www/ShopProject/app/trade/serializers.py”, line 116, in get_alipay_url
return_url=“http://47.105.62.144:8000/alipay/return/”
ValueError: Not a valid PEM pre boundary
原因:Pycryptodome进行RSA签名,读取文件内的私钥和公钥出错,这里在应用私钥文件、应用公钥文件、支付宝公钥文件里面 内容前后要加上-----BEGIN PUBLIC KEY-----,-----END PUBLIC KEY-----(注意是五个-),我这里出错就是因为写了六个-。
5.问题:在代码没问题运行起来之后,浏览器端访问不了,显示无法访问此网站,可能时阿里云服务器的安全端口没有设置。
解决:登陆阿里云在实例安全组设置8000端口的安全规则,在运行。

二、项目细节完善

1.首页轮播图API接口实现

序列化

class BannerSerializer(serializers.ModelSerializer):
    '''
    轮播图
    '''
    class Meta:
        model = Banner
        fields = "__all__"

视图类

class BannerViewset(mixins.ListModelMixin, viewsets.GenericViewSet):
    """
    首页轮播图
    """
    queryset = Banner.objects.all().order_by("index")
    serializer_class = BannerSerializer

url配置

# 配置首页轮播图的url 
router.register(r'banners', BannerViewset, basename="banners")

测试
tools里面连接服务器后测试:

[root@todolist-server ~]# cd /data/www/ShopProject/
[root@todolist-server ShopProject]# ls
app                                             manage.py
db.sqlite3                                      media
Django+Vue网上购物商城() 用户交易API接口.pdf  requirements.txt
Django+Vue网上购物商城()   项目细节完善.pdf   ShopProject
Django+Vue网上购物商城()  项目部署.pdf        venv
doc
[root@todolist-server ShopProject]# source venv/bin/activate
(venv) [root@todolist-server ShopProject]# python manage.py runserver 0.0.0.0:8000

此时轮播图为空,去后台添加轮播图来测试
在这里插入图片描述
在这里插入图片描述
在查看banners信息,轮播图添加成功
在这里插入图片描述

报错

1.在首页轮播图API接口完善代码时,TypeError: str returned non-string (type ImageFieldFile)
原因:这里要返回一个图片的名称的字符串 不能是image对象
解决:去goods.models中,修改友好字符串的返回类型:images对象改为返回字符串:return self.image.name
2.如果访问不到可能是本地代码没有上传服务器,访问结果不对可能服务没有更新,需要重启一下服务

2.新品API接口实现

在设计Goods model时候有一个字段is_new, 实现这个接口只要在goods/filters/GoodsFilter里面添加一个过滤就可以了。

class GoodsFilter(django_filters.rest_framework.FilterSet):
    '''
    商品过滤的类
    '''

    class Meta:
        model = Goods
        # http://xxxx/goods/?price_min=10&price_max=100
        fields = ['price_min', 'price_max','is_hot', 'is_new']

测试
在后台设置几个商品 is_new, 前台访问http://IP/goods进行过滤查看新品

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值