美文网首页
Django实例-车辆违章查询三

Django实例-车辆违章查询三

作者: Dxes | 来源:发表于2020-01-12 20:39 被阅读0次

添加视图函数

在view.py文件中添加视图函数,拿到请求,返回响应,给出数据,渲染页面

from django.shortchs import render

def search(request):
    
    # 在表单中取carno,没取出给空值
    carno = request.POST.get('carno','')
    if carno:
    
        #去掉拿到车牌中间的空字符
        carno = carno.replace(' ', '')
    # 通过Record这个模型的模型管理器的filter方法,通过car对象的carno属性去筛选出    # 和表单拿到的车牌号相同的记录,返回一个查询集对象
    queryset = Record.objects.filter(car__carno=carno)
    # 将查询集对象添加到字典中 
    context = {'records': queryset}
    return render(request, 'index.html', context)

视图函数完成之后在urls.py文件添加视图函数的路径。

urlpatterns = [
    ……
    path('search/',search),
]

修改模板页面index.html


        <form id="form" action="/search/" method="post">
            {% csrf_token %}
            <input type="text" name="carno" placeholder="请输入车牌号或车主姓名"/>
            <input type="submit" value="查询"/>
        </form>
        <hr /><br />
        {% if records %}
        <table>
            <tr>
                <th>车牌</th>
                <th>车主</th>
                <th>时间</th>
                <th>地点</th>
                <th>违章原因</th>
                <th>处罚方式</th>
                <th>是否受理</th>
                <th>操作</th>
            </tr>
            {% for record in records %}
            <tr>
                <td>{{ record.car.car_no }}</td>
                <td>{{ record.car.owner }}</td>
                <td>{{ record.offend_time }}</td>
                <td>{{ record.offend_place }}</td>
                <td>{{ record.offend_reason }}</td>
                <td>{{ record.punish }}</td>
                <td>{{ record.dealed | yesno:'已受理,未受理' }}</td>
            </tr>
            {% endfor %}
        </table>
        {% else  %}
        <h3>没有查询到违章记录</h3>
        {% endif %}

在重新运行项目,搜索框中输入要查询的车牌号信息。

search.png

结果

result.png

模糊查询+多条件查询

在字段后面加上

# 模糊查询
__exact  #表示精确查询
__contains  # 包含,相当于在字符串的头尾加%的模糊查询
__startswith   # 表示以什么开头的模糊查询
__endswith      # 表示以什么结尾的模糊查询
# 注意:如果在参数前面加i,表示忽略大小写的模糊查询。使用__contains和__endswith会导致程序性能很差。

queryset = Record.objects.filter(car__carno__istarswith=carno)
# 查询在Recor模型的模型管理器(objects)里面查询car对象的carno属性(忽略大小写、以什么开头)的记录,返回一个查询集。

Django中有个Q对象,,使用时需要导入,用于多条件查询,我们可以使用符号&或者|将多个Q()对象组合起来传递给filter(),exclude(),get()等函数 。

from django.db.models import Q

#  |    表示‘或者’的意思
#  &    表示’并且‘的意思
#  ~    表示‘非’的意思

#例如:
Q(car__carno__startswith='川A') | Q(car__owner__contains='王')
相当于SQL语句:
# select * from tb1 where carno like '川A%' or owner like  '%王%';这样的查询语句。

# 车牌或者车主姓名模糊查询查询
queryset = Record.objects.filter(
    Q(car__carno__istarswith=carno) |
    Q(car__owner__contains=carno)
)

分页操作

可以对查询集进行切片操作来达到分页的效果。

def search(request):
    context = {'searched': False}
    if request.method == 'POST':
        carno = request.POST.get('carno','')
        # 将拿到的车牌做去掉空格,转大写处理
        carno = carno.replace(' ', '').upper()
        context['carno'] = carno
        page = int(request.POST.get('page', '1'))
        size = int(request.POST.get('size', '5'))
        if carno:
            context['searched'] = True
            context['current_page'] = page
            total = Record.objects.filter(
                Q(car__carno__istarswith=carno) |
                Q(car__owner__contains=carno)
            ).count()
            # 总页数
            context['total_page'] = math.ceil(total / size)
            # 页面显示的记录的条偶数
            queryset = Record.objects.filter(
                Q(car__carno__istarswith=carno) |
                Q(car__owner__contains=carno)
            )[(page - 1) * size:page * size]
            context['records'] = queryset
    return render(request, 'index.html', context)

在视图函数中修改好之后,就可以去前端页面添加相应的模板语法。用Vue实现上一页,下一页的功能。

相关文章

  • Django实例-车辆违章查询三

    添加视图函数 在view.py文件中添加视图函数,拿到请求,返回响应,给出数据,渲染页面 视图函数完成之后在url...

  • Django实例-车辆违章查询二

    创建模板页 在templates文件下新建一个index.html文件作为需要渲染的模板文件,并且纳入版本控制。 ...

  • Django实例-车辆违章查询一

    项目准备工作 1.首先使用pip install django==2.2.9 安装好django 安装完成之后使用...

  • 车辆违章批量查询

    12123wz车辆违章批量查询系统,是针对全国各类型的车辆进行违章查询的。专门为车队运输公司打造的查询平台,直连1...

  • 濮阳车辆如何查询违章处理违章

    濮阳车辆如何查询处理违章 电话 18137784001 友途车服为大家整理的濮阳市的限行政策 11月30号,濮阳市...

  • 车助手:查违章 代缴费 一步到位

    经常开车出行,都不知道车辆是否有违章,其实,你可以在“ 车助手app”上轻松查询。 车助手以深耕汽车违章查询为根本...

  • 濮阳车辆扣3分查询处理缴纳罚款

    濮阳车辆如何查询处理违章 电话 18137784001 建行友途车主卡福利 建行友途车主卡,用于车辆交通违法自助...

  • 从案例中看产品设计原则

    违章查询助手是汽车之家旗下产品,打出完整版(违章查询助手)和简装版(违章查询)的组合。简装版只提供查违章和看天气的...

  • 千里办违章

    违章者:云南车 违章地:全国三省 居住地:山西 本次办理学习心得 1.外地车只能在车辆注册地和违章地处理 2.车辆...

  • 处理车辆违章

    又到了车辆年检的时候,好在网络发达,可以全程代办。 今天接到黄牛通知,说有两个违章要处理,都是异地违法停车,每个1...

网友评论

      本文标题:Django实例-车辆违章查询三

      本文链接:https://www.haomeiwen.com/subject/stewactx.html