Skip to content

Commit

Permalink
修改/删除用户收货地址信息,设置默认地址,修改收货地址标题
Browse files Browse the repository at this point in the history
  • Loading branch information
HZreal committed May 26, 2021
1 parent b8375dc commit c40b89e
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 11 deletions.
17 changes: 10 additions & 7 deletions meiduo_mall/meiduo_mall/apps/areas/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,18 @@ def get(self, request):
# 没有缓存数据则查库获取市或区县数据
try:
# 需求的json数据:sub_data = {"id":130000, "name":"河北省", "subs":[{"id":130100, "name":"石家庄市"}, {}, {}, {"id":130104, "name":"桥西区"}]}
model= Area.objects.get(id=area_id)
sub_model_list = model.sub.all() # 子地区对象列表
area = Area.objects.get(id=area_id)
sub_area_list = area.sub.all() # 子地区对象列表
# sub_area_list = Area.objects.filter(parent_id=area_id) # 亦可

# 将模型类列表转成字典列表
# subs = []
# for sub_model in sub_model_list:
# district = {'id': sub_model.id, 'name': sub_model.name}
# subs.append(district)
# sub_data = {'id': model.id, 'name': model.name, 'subs': subs}
# for sub_area in sub_area_list:
# sub_area_dict = {'id': sub_area.id, 'name': sub_area.name}
# subs.append(sub_area_dict)
# sub_data = {'id': area.id, 'name': area.name, 'subs': subs}
# 使用列表推导式更简洁
sub_data = {'id': model.id, 'name': model.name, 'subs': [{'id': sub_model.id, 'name': sub_model.name} for sub_model in sub_model_list]}
sub_data = {'id': area.id, 'name': area.name, 'subs': [{'id': sub_area.id, 'name': sub_area.name} for sub_area in sub_area_list]}

# 缓存数据到cache
cache.set('sub_area_' + area_id, sub_data, 3600)
Expand Down
2 changes: 1 addition & 1 deletion meiduo_mall/meiduo_mall/apps/users/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ def put(self, request, address_id):
# 修改收货地址标题
class UpdateAddressTitleView(LoginRequiredJSONMixin, View):
def put(self, request, address_id):
# 接收参数
# 接收参数:用户输入的title内容通过请求体body传来
json_str = request.body.decode()
data_dict = json.loads(json_str)
title = data_dict.get('title')
Expand Down
2 changes: 1 addition & 1 deletion meiduo_mall/meiduo_mall/static/js/user_center_site.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ let vm = new Vue({

// 后端通过jinja2传给js再传给vue的用户地址信息
addresses: JSON.parse(JSON.stringify(addresses)), // 将jinja2传来的字典列表转成列表/数组格式的字符串,再用Json.parse解析成js可识别的数组或对象数据
default_address_id: default_address_id, // 默认地址id
default_address_id: parseInt(JSON.parse(JSON.stringify(default_address_id))), // 将后端传来的默认地址id转成int

// 字符串类型的下标索引:当前需要编辑的address对象在addresses数组中的下标index(整型)转成字符串类型
editing_address_index: '', // editing_address_index = index.toString()
Expand Down
6 changes: 4 additions & 2 deletions meiduo_mall/meiduo_mall/templates/user_center_site.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ <h3>用户中心</h3>
<h3>[[ address.title ]]</h3>
<a @click="show_edit_title(index)" class="edit_title"></a>
</div>
<em v-if="address.id==default_address_id">默认地址</em>
<em v-if="address.id===default_address_id">默认地址</em>
<span @click="delete_address(index)" class="del_site">×</span>
</div>
<ul class="site_list">
Expand Down Expand Up @@ -154,7 +154,8 @@ <h3 v-else>新增收货地址</h3>
<input v-model="form_address.email" @blur="check_email" type="text" class="email">
<span v-show="error_email" class="email_error">邮箱信息有误</span>
</div>
<input @click="save_address" type="button" name="" value="新 增" class="info_submit">
<input @click="save_address" v-if="editing_address_index" type="button" name="" value="修 改" class="info_submit">
<input @click="save_address" v-else type="button" name="" value="新 增" class="info_submit">
<input @click="is_show_edit=false" type="reset" name="" value="取 消" class="info_submit info_reset">
</form>
</div>
Expand All @@ -163,6 +164,7 @@ <h3 v-else>新增收货地址</h3>
</div>
<script type="text/javascript">
let addresses = {{ addresses | safe }};
{# Mark the value as safe which means that in an environment with automatic escaping enabled this variable will not be escaped. #}
let default_address_id = "{{ default_address_id }}";
</script>
<script type="text/javascript" src="{{ static('js/common.js') }}"></script>
Expand Down

0 comments on commit c40b89e

Please sign in to comment.