7.27-8.2 JLL实习日志-Ajax +Restful+Api+Variable参数
来源:互联网 发布:虚拟号码发短信软件 编辑:程序博客网 时间:2024/05/16 23:47
实现 的功能 :在 Django 内 使用 ajax 的 方式 调用 Restful Api 去 删选 数据
实现的 主要 流程
- template 部分
<script type="text/javascript"> $(document).ready(function () {$('#ab').click(function () { var filter_2 = $("#insert_value").val();//for City var filter_1 = $("#insert_value_1").val();// for Company type var filter = $('#filter').val();//for search $.ajax({ type: "GET", //data: {filter:filter, filter_1_value:filter_1,insert_value:insert_value}, url: "https://horizon-retail-20170614-leon-ghibli.c9users.io/restful_api/companyviewset/?format=json", cache: false, dataType: "json", contentType : 'application/json', success: function (json) { $('#ajax_search').empty(); showTable(json); }, error: function () { alert("false"); } }); }); }); // create table by cycle function showTable(data){ var dataArray =data; var len = dataArray.length; var tableStr = ''; tableStr = '<table id="footable-res2" class="demo" data-filter="#filter" data-filter-text-only="true" data-page-size="20" rules="rows"><thead><tr><th data-toggle="true">{{ ui_setting.Company }}</th><th data-hide="phone">Company Name (Local)</th><th data-hide="phone">Brand(s) </th><th data-hide="phone,tablet">Company Type</th><th> City </th> <data-hide="phone"> <th>Address</th> <th data-hide="all"> Action </th> </tr></thead>' tableStr = tableStr+'<tbody data-link="row" id ="ajax_search">' for(var i=0;i<len;i++){ var len_2 = dataArray[i]['Brand'].length; var arr = [] for(var j=0;j<len_2;j++){ var brand_name = dataArray[i]['Brand'][j]['Brand_Name'] if (brand_name){ brand_name_sup = '<a href="/brand/view_detail/'+dataArray[i]['Brand'][j]['id']+'/">'+brand_name arr.push(brand_name_sup); arr.push('/'); } } arr_2 = arr.join(""); tableStr = tableStr+"<tr><td>" + '<a href="/company/view_detail/'+dataArray[i].id +'/">'+dataArray[i].Company_Name + "</td>" + "<td>" + dataArray[i].Company_Name_SC + "</td><td>" + arr_2 + "</td><td>" + dataArray[i].Company_Type + "</td>" +"<td>" +dataArray[i].City + "</td>" +"<td>" +dataArray[i].Address + "</td>"+ '<td style="white-space:nowrap;"> <a type="button" href="/company/edit/'+dataArray[i].id+'/" class="btn btn-info"><span class="entypo-pencil"></span> {{ ui_setting.Edit }}</a><a href="/company/delete/'+dataArray[i].Company_Name+'" type="button" class="btn btn-danger" onclick="javascript: return submit_confirm();"><span class="entypo-trash"></span> {{ ui_setting.Delete }}</a></td>' +"</tr>" }; tableStr = tableStr+'<tfoot><tr><td colspan="100%"><div class="pagination pagination-centered"></div></td></tr></tfoot></tbody></table>' $("#footable-res2").html(tableStr); $(function(){ $('table.demo').trigger('footable_initialize'); }); } </script>
Url部分
Restful ViewSet部分
class CompanyViewSet(viewsets.ModelViewSet): serializer_class = CompanySerializer filter_backends (django_filters.rest_framework.DjangoFilterBackend,) def get_queryset(self):# how to define the null and None filter_1 = self.request.query_params.get('a')#, None) filter_company_type = self.request.query_params.get('b', None)# company_type filter_city_type = self.request.query_params.get('c', None) Companyqueryset = Company.objects.all() if filter_1 or filter_company_type or filter_city_type: for item in Companyqueryset: if filter_1: value_list = [item.Pref_Company_Name_Flg,item.Pref_Company_Name,item.Company_Type,item.Company_Name,item.Country,item.City,item.Address] if not views.containsAnyInList(value_list,filter_1): Companyqueryset=Companyqueryset.exclude(id=item.id) if filter_company_type: company_type_list = filter_company_type.split(',') if not views.containsAnyStringInList(company_type_list,item.Company_Type): Companyqueryset=Companyqueryset.exclude(id=item.id) if filter_city_type: city_type_list = filter_city_type.split(',') if not views.containsAnyStringInList(city_type_list,item.City): Companyqueryset=Companyqueryset.exclude(id=item.id) return Companyqueryset
- 碰到 的问题
- 在 Restful Api 中 如何 实现 ManytoMany模型 的 展现 ,
brand
和company
是 多对多 的关系 在CompanySerializer
需要 加上many=True
的关系,但是 怎么 实现 指定 显示brand
下面 的 菜单 呢 ?
- 在 Restful Api 中 如何 实现 ManytoMany模型 的 展现 ,
class CompanySerializer(serializers.HyperlinkedModelSerializer): Brand = BrandSerializer(source='brand_set', read_only=True, many=True) Brand_Name = serializers.ReadOnlyField(source='Brand.Name', read_only=True) class Meta: model = Company #fields = data_export_setting.Company_form_stand fields = ['id', 'Brand','Brand_Name','Company_Type','Company_Name','Company_Name_SC','IsIndividual','Pref_Client_Name','Pref_Client_Name_Flg','Country','City','Address','Address_SC','Status','Created_On','Created_by','Modified_On','Modified_By'] def create(self, validated_data): return Company.objects.create(**validated_data) def update(self, instance, validated_data): instance.__dict__.update(**validated_data) instance.save() return instance
2.前端js 显示 company 的 Brand.Brand_Name 的方式,最初使用的是Brand.Brand_Name,但是报错,正确的方式是
template already get the Brand object and how to show in the template ? "Brand.BrandName" is wrong!len_2 = dataArray[i]['Brand'].length;var arr = []for(var j=0;j<len_2;j++){var brand_name = dataArray[i]['Brand'][j]['Brand_Name']if (brand_name){brand_name_sup = ''+brand_namearr.push(brand_name_sup);arr.push('/'); }}
3 . 参考地址是这里 ,英语版本
4.没有办法理解实现ajax传参数到ViewSet
类中指定的函数 ,文档中可以看到是 默认的函数get_queryset
处理参数 ,如果 参数 是多个的时候 使用self.request.query_params.get
这样的方式进行 得到
阅读全文
0 0
- 7.27-8.2 JLL实习日志-Ajax +Restful+Api+Variable参数
- 5.3 JLL 实习日志
- 5.5 JLL 实习日志
- 5.9 JLL实习日志
- 5.27 JLL--实习日志--
- 6.5 JLL--实习日志
- 6.22-6.27 JLL--实习日志--Ajax+js 端实现
- 7.24-7.26 JLL实习日志-ajax+RestfulApi+Django-未完改进
- 6.16-6.19 JLL--实习日志--
- 5.26 JLL--实习日志--Primary_Image+total_setting
- 6.15 JLL--实习日志--SetupNewWorkSpace on cloud9
- 7.14-7.21 JLL实习日志-DropDownBox Upgrade
- 8.29-8.30 JLL实习日志-validate deprecated
- 9.1-9. JLL实习日志-未完结
- 6.30-7.2 LL--实习日志--Restful API 调用和编写
- 5.4 JLL 实习日志 –form 表单问题
- 5.11 JLL实习日志-实现download功能实现
- 5.10 JLL实习日志-实现upload 功能实现
- 根据指定 日期格式 生成 指定格式的指定日期
- 树莓派 QT 编程下的硬件中断
- Java:打印杨辉三角
- RMQ算法
- java反射机制
- 7.27-8.2 JLL实习日志-Ajax +Restful+Api+Variable参数
- ThreadLocal详解
- 关于我们
- HDU 6058 Kanade's sum (区间第k大的数的贡献)
- 偏差-方差权衡(Bias-Variance Tradeoff)
- FallbackDefinitionException:fallback method wasn't found: defaultUser([class java.lang.Long])
- 一起学Kotlin(3)
- params ref out
- jquery 基本过滤器,删除table的行