You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中存储用户输入并通过ORM匹配SQLite数据行

Django 条码匹配查询实现方案

先修正代码中的基础错误

你的views.py里模型导入路径有误,Django无法找到当前app下的模型,需要修改为:

from .models import Inventory  # 新增开头的点,表示当前目录

完善search函数的匹配逻辑

现有代码已经实现了精确匹配,但缺少空输入处理、请求方法兼容以及结果状态反馈,优化后的代码如下:

from django.shortcuts import render
from .models import Inventory

def index(request):
    return render(request, 'form.html')

def search(request):
    # 获取输入并去除首尾空格,默认空字符串避免None
    search_input = request.POST.get('barcode', '').strip()
    # 初始化结果集合
    matched_items = []
    
    if search_input:
        # 精确匹配:完全匹配输入的条码
        matched_items = Inventory.objects.filter(item_bc=search_input)
        # 如果需要模糊匹配(支持部分条码匹配,不区分大小写),替换为下面一行
        # matched_items = Inventory.objects.filter(item_bc__icontains=search_input)
    
    # 将匹配结果和输入内容传给模板
    return render(request, 'result.html', {
        "matched_items": matched_items,
        "search_input": search_input
    })

补充模板文件实现

form.html(查询表单页)

必须添加{% csrf_token %}防止Django的CSRF拦截,表单提交路径使用URL名称保证灵活性:

<!DOCTYPE html>
<html>
<head>
    <title>条码查询</title>
</head>
<body>
    <h1>库存条码查询</h1>
    <form method="POST" action="{% url 'search' %}">
        {% csrf_token %}
        <input type="text" name="barcode" placeholder="输入条码" value="{{ search_input }}">
        <button type="submit">查询</button>
    </form>
</body>
</html>

result.html(结果展示页)

根据匹配状态展示不同内容,清晰反馈查询结果:

<!DOCTYPE html>
<html>
<head>
    <title>查询结果</title>
</head>
<body>
    <h1>查询结果</h1>
    {% if matched_items %}
        <p>共找到{{ matched_items|length }}条匹配记录:</p>
        <table border="1">
            <tr>
                <th>条码</th>
                <th>商品详情</th>
            </tr>
            {% for item in matched_items %}
            <tr>
                <td>{{ item.item_bc }}</td>
                <td>{{ item.item_details }}</td>
            </tr>
            {% endfor %}
        </table>
    {% else %}
        {% if search_input %}
            <p>未找到与「{{ search_input }}」匹配的库存记录</p>
        {% else %}
            <p>请输入条码进行查询</p>
        {% endif %}
    {% endif %}
    <br>
    <a href="{% url 'index' %}">返回查询页</a>
</body>
</html>

关键说明

  1. 精确/模糊匹配选择:
    • 精确匹配使用item_bc=search_input,适合条码唯一的场景
    • 模糊匹配使用item_bc__icontains=search_input,支持部分字符匹配,__icontains不区分大小写,换成__contains则区分大小写
  2. 空输入处理:判断输入为空时不执行查询,避免返回全量数据
  3. 模板渲染:直接传递模型实例的QuerySet给模板,比values()更直观,可直接访问模型字段

内容的提问来源于stack exchange,提问作者Meet Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:05:41