django的基于类的搜索列表视图
django-search-views的Python项目详细描述
django搜索视图
这个包提供了一个基于django类的视图,用于显示列表 具有搜索表单的对象。完整文档位于 (http://inmagik.github.io/django-search-views/)。
功能:
- 允许搜索多个字段
- 支持分页
- 为每个字段设置筛选运算符
- 设置固定过滤器
- 使用过滤器的值列表
安装
来自PYPI:
pip install django-search-views
来源:
python setup.py install
示例
以下代码设置用于显示 “演员名单”。
型号.py:
class Actor(models.Model): name = models.CharField(max_length=32) surname = models.CharField(max_length=32) age = models.IntegerField()
forms.py
from .models import Actor from django import forms class ActorSearchForm(forms.Form): search_text = forms.CharField( required = False, label='Search name or surname!', widget=forms.TextInput(attrs={'placeholder': 'search here!'}) ) search_age_exact = forms.IntegerField( required = False, label='Search age (exact match)!' ) search_age_min = forms.IntegerField( required = False, label='Min age' ) search_age_max = forms.IntegerField( required = False, label='Max age' )
views.py
from .model import Actor from .forms import ActorSearchForm from search_views.search import SearchListView from search_views.filters import BaseFilter class ActorsFilter(BaseFilter): search_fields = { 'search_text' : ['name', 'surname'], 'search_age_exact' : { 'operator' : '__exact', 'fields' : ['age'] }, 'search_age_min' : { 'operator' : '__gte', 'fields' : ['age'] }, 'search_age_max' : { 'operator' : '__lte', 'fields' : ['age'] }, } class ActorsSearchList(SearchListView): model = Actor paginate_by = 30 template_name = "actors/actors_list.html" form_class = ActorSearchForm filter_class = ActorsFilter
查看模板“actors/actors\u list.html”:
{% extends "base.html" %} {% block content%} <div class="container"> <h2>Actors list</h2> <form class="form-inline" action="" method="GET"> {{ form }} <button class="btn" type="submit">Search</button> </fieldset> </form> <table class="table table-bordered table-condensed"> <tr> <th>Name</th> <th>Surname</th> <th>Age</th> </tr> {% for object in object_list %} <tr> <td>{{object.name}}</td> <td>{{object.surname}}</td> <td>{{object.age}}</td> </tr> {% endfor %} </table> {% if is_paginated %} {% include "paginator.html" %} {% endif %} </div> {% endblock %}
变更日志
0.2.0
- 过滤器现在在它们自己的类中配置,该类派生自 searchlist_views.filters.BaseFilter。
0.3.0
- 将主包从searchlist_views重命名为search_views。
0.3.1
- python 3兼容性
许可和开发
该项目由麻省理工学院授权和维护 Inmagik,建议和请求是 欢迎通过Github project page