5.17 JLL实习日志-实现get方式过滤数据,表格形式展现在前端

来源:互联网 发布:java游戏吧 编辑:程序博客网 时间:2024/05/21 17:24
  1. views 里面传递全局变量的方式
    data_model_label_setting.get(‘ConfirmPassword’),
  2. 使用url+get方式传递出现了问题
    action/url 区别,动作和指向链接,前者包括后者,form形式的传参数是会被忽略后面的参数部分,这次使用的get在url 上直接传值,html 代码如下
    注意点是 没有办法使用action 需要使用class=’button’ 的形式给出
<div class="col-sm-3">   <a type="submit"  id ='a'  onlick= 'get_href()' class="button btn btn-default" style='margin:0,10px,0,0' ><i class="fa fa-search" aria-hidden="true" ></i></a>   <a href="#clear" style="margin-left:10px;" class="pull-right btn btn-default clear-filter" title="clear filter">{{ ui_setting.Reset }}</a></div>

后台取值的方式也是固定的,如下

value_lower = float(request.GET.get('a','xxx'))
  1. href=”/availability/view_get/?ab=3&cd=4” 使用get方式传
    这边的href 利用js 动态传入

  2. 写一个js 生成动态路由器
    出现的问题是href 跳转前的值是不变化的,里面有赋值的和跳转的两个动作,我开始处理的时候使用的方法是只是有一个赋值的动作导致跳转不成功!里面还有innerHtml 的这个概念,url = encodeURI(url);是因为传入的参数还有string类型的,window.location.href=url 是实现跳转的这个动作的

 $('.button').click(function(e){   e.preventDefault(); var filtervalue= document.getElementById('filters').value; var value_lower = document.getElementById('slider-snap-value-lower1').innerHTML;var value_upper = document.getElementById('slider-snap-value-upper1').innerHTML;          var url = '/availability/view_get/?a='+value_lower+'&b='+value_upper+'&c='+filtervalue          url = encodeURI(url);          var link = document.getElementById("a");           //var link = document.getElementById("a");          //link.setAttribute('href','/availability/view_get/?a=3%b=4')          link.setAttribute('href',url)          window.location.href=url      }) 

5.在view里面实现过滤的语句最后返回到前端,使用ajax实现异步刷新
在views碰到了类似于Mysql 语句
具体的有如下的几种,
exact iexact contains icontains
in gt gte lt lte startswith istartswith
endswith iendswith range year month
day week_day isnull search regex
iregex
下面具体的用法,这里的properties_instance是通过
objects.filter() 过滤得到

properties_instance  =Property.objects.filter(NameUnicode__icontains=innerfilter)
Availability.objects.filter(Q(Property__in=properties_instance)&~Q(UnitRental__lt = value_upper)&~Q(UnitRental__gt = value_lower))

6.去掉汉字只剩下数字,
这边有个问题在于数据库里面的是string 类型的,但是和float 进行比较的时候会出错,比较的结果不是float的比较方式,要改动数据库的类型又觉得很麻烦,但是该怎么比较呢?
还有‘3.5-3.8’这样的符号导致最后比较的时候出现问题
views 函数的代码如下

def search_form(request):    if request.method == 'GET':        value_lower = float(request.GET.get('a','xxx'))        value_upper = float(request.GET.get('b','xxx'))        innerfilter = request.GET.get('c','xxx')        print value_lower,value_upper        properties_instance  = Property.objects.filter(NameUnicode__icontains=innerfilter)        availabilities = Availability.objects.filter(Q(Property__in=properties_instance)&~Q(UnitRental__lt = value_upper)&~Q(UnitRental__gt = value_lower))    return render_to_response('availability/view.html', {'availabilities': availabilities}, context_instance = RequestContext(request))