Django项目之电商购物商城 -- 新增收货地址

简介: Django项目之电商购物商城 -- 新增收货地址

Django项目之电商购物商城 – 新增收货地址

  1. 在项目中新增收货地址我们需要根据前端的设置来写

在这里我们看到新增收货地址的方法发送的是一个ajax请求 , 使用的是post方法 , 其路由为addresses/create

分析完毕后开始写视图以及路由

一. 设置视图以及路由

因为新增地址依旧是用户的权限 , 所以我们在users该应用下创建

1. 视图
# 保存收货地址
class SaveAddressView(View):
    def post(self , request):
        json_str = request.body.decode()
        json_dict = json.loads(json_str)
        receiver = json_dict.get('receiver')
        province_id = json_dict.get('province_id')
        city_id = json_dict.get('city_id')
        district_id = json_dict.get('district_id')
        place = json_dict.get('place')
        mobile = json_dict.get('mobile')
        tel = json_dict.get('tel')
        email = json_dict.get('email')
        if not all([receiver,province_id,city_id,district_id,place,mobile]):
            return HttpResponseForbidden("缺少必要数据")
        if not re.match(r'^1[3-9]\d{9}$' , mobile):
            return HttpResponseForbidden("号码不正确")
        if tel:
            if not re.match(r'^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$', tel):
                return HttpResponseForbidden('固定电话输入有误')
        if email:
            if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):
                return HttpResponseForbidden('邮箱输入有误')
        # 将数据保存到数据库中
        address = Address.objects.create(
            user=request.user,
            receiver=receiver,
            province_id=province_id,
            city_id=city_id,
            district_id=district_id,
            place=place,
            mobile=mobile,
            tel=tel,
            email=email,
        )
        address_dict = {
            'id': address.id,
            'receiver': address.receiver,
            'province': address.province.area_name,
            'city': address.city.area_name,
            'district': address.district.area_name,
            'place': address.place,
            'mobile': address.mobile,
            'tel': address.tel,
            'email': address.email,
        }
        return JsonResponse({'code': RETCODE.OK, 'errmsg': '新增地址成功', 'address': address_dict})

在这里从前端获取数据以及对数据的校验都比较简单我就不重复赘述了 , 唯一要注意的是所写的字段以及命名要和前端设置的一致

2.路由
# 新增收货地址
    path('addresses/create/' , views.SaveAddressView.as_view())

二. 修改前端将数据传入浏览器

在这里通过vue框架传入之前写入的列表数据

<script type="text/javascript">
    let addresses = {{ addresses|safe }};
    let default_address_id = {{ default_address_id|default:0 }};
    </script>

通过循环获取数据

<div class="site_top_con">
        <a @click="show_add_site">新增收货地址</a>
        <span>你已创建了<b>{{ count }}</b>个收货地址,最多可创建<b>20</b>个</span>
      </div>
      <div class="site_con" v-for="(address , index) in addresses" key="address.id">
        <div class="site_title">
          <h3>[[ address.receiver ]] [[address.province]]</h3>
          <a @click="show_edit_title(index)" class="edit_icon"></a>
          <em v-if="address.id===default_address_id">默认地址</em>
          <span class="del_site">×</span>
        </div>
        <ul class="site_list">
          <li><span>收货人:</span><b>[[address.receiver]]</b></li>
          <li><span>所在地区:</span><b>[[address.province]] [[address.city]] [[address.district]]</b></li>
          <li><span>地址:</span><b>[[address.place]]</b></li>
          <li><span>手机:</span><b>[[address.mobile]]</b></li>
          <li><span>固定电话:</span><b>[[address.tel]]</b></li>
          <li><span>电子邮箱:</span><b>[[address.email]]</b></li>
        </ul>

新增收货地址的操作就到这里了 , 后面还需要设置默认收货地址 , 以及修改地址


相关文章
|
2月前
|
数据管理 数据库 数据安全/隐私保护
Django—同一项目不同app使用不同数据库
在Django项目中实现不同app使用不同数据库的配置,可以通过配置多数据库、创建数据库路由和配置路由来实现。通过这种方法,可以有效地将数据隔离到不同的数据库,提高数据管理的灵活性和系统的可扩展性。希望本文能为开发者在Django项目中使用多数据库提供清晰的指导。
31 4
|
6月前
|
Linux Python
解决django项目报错很离谱的报错之RuntimeError: populate() isn't reentrant
解决django项目报错很离谱的报错之RuntimeError: populate() isn't reentrant
|
6月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
197 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
6月前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
135 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
4月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
327 45
|
4月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
142 2
|
4月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
82 1
|
5月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
88 4
|
5月前
|
存储 数据库 Python
Python编程--Django入门:用户账户(一)
Python编程--Django入门:用户账户(一)
65 1
|
5月前
|
存储 Shell 数据库
Python编程--Django入门:用户账户(二)
Python编程--Django入门:用户账户(二)
89 2