您的位置:首页 > Web前端

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

2017-05-17 20:29 555 查看
views 里面传递全局变量的方式

data_model_label_setting.get(‘ConfirmPassword’),

使用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'))


href=”/availability/view_get/?ab=3&cd=4” 使用get方式传

这边的href 利用js 动态传入

写一个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))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐