13 django 新增产品知识点
1 后台
- form校验
body = json.loads(request.body) form = ProjectForm(body) if form.is_valid(): XXX else: XXX
- 使用form中的内容进行新增操作
# proj_name = form.cleaned_data['proj_name'] # host = form.cleaned_data['host'] # 引入model,对数据库进行操作 Project.objects.create(**form.cleaned_data)
- 响应中的中文会乱码
result = {'code': 1, 'msg': u'成功!'} return JsonResponse(result, json_dumps_params={'ensure_ascii':False})
- 获取json中指定的key的值
# 定义取值方法所需的参数 msg = 'message' error_dict = json.loads(form.errors.as_json()) tmp_list = [] # 使用取值方法 error_list = get_target_value(msg, error_dict, tmp_list) # print(error_list) result = {'code': -1, 'msg': error_list[0]} return JsonResponse(result, json_dumps_params={'ensure_ascii':False}) --------------------------------------------------------------------------- # 递归调用字典 def get_target_value(key, dic, tmp_list): """ :param key: 目标key值 :param dic: JSON数据 :param tmp_list: 用于存储获取的数据 :return: tmp_list """ if not isinstance(dic, dict) or not isinstance(tmp_list, list): # 对传入数据进行格式校验 return 'argv[1] not an dict or argv[-1] not an list ' if key in dic.keys(): tmp_list.append(dic[key]) # 传入数据存在则存入tmp_list else: for value in dic.values(): # 传入数据不符合则对其value值进行遍历 if isinstance(value, dict): get_target_value(key, value, tmp_list) # 传入数据的value值是字典,则直接调用自身 elif isinstance(value, (list, tuple)): _get_value(key, value, tmp_list) # 传入数据的value值是列表或者元组,则调用_get_value return tmp_list def _get_value(key, val, tmp_list): for val_ in val: if isinstance(val_, dict): get_target_value(key, val_, tmp_list) # 传入数据的value值是字典,则调用get_target_value elif isinstance(val_, (list, tuple)): _get_value(key, val_, tmp_list) # 传入数据的value值是列表或者元组,则调用自身
2 前台
- 获取localstorage中的token
localStorage.getItem('token')
- token加入头文件
headers: new Headers({'Content-Type': 'application/json', 'authorization': localStorage.getItem('token')}),